日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

WPF里ItemsControl的分组实现

發(fā)布時(shí)間:2025/7/14 asp.net 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 WPF里ItemsControl的分组实现 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
WPF里ItemsControl的分組實(shí)現(xiàn)

原文:WPF里ItemsControl的分組實(shí)現(xiàn)

  我們?cè)谟玫絀temsControl時(shí),有時(shí)會(huì)用到分組,如ListBox,ListView,DataGrid。WPF的ItemsControl可以實(shí)現(xiàn)分組,是依托于GroupStyle,以ListBox為例,他的分組效果圖為:

  以下為前臺(tái):

?

<ListBox Name="lbMain"><ListBox.ItemTemplate><DataTemplate><StackPanel Orientation="Horizontal"><TextBlock Width="150" Text="{Binding FileName}" /><TextBlock Width="100" Text="{Binding AuthorName}" /><TextBlock Width="100" Text="{Binding UpTime}" /></StackPanel></DataTemplate></ListBox.ItemTemplate><ListBox.GroupStyle><GroupStyle><GroupStyle.ContainerStyle><Style TargetType="{x:Type GroupItem}"><Setter Property="Template"><Setter.Value><ControlTemplate TargetType="{x:Type GroupItem}"><Expander ExpandDirection="Down" IsExpanded="True"><Expander.Header><StackPanel Orientation="Horizontal"><TextBlock VerticalAlignment="Center" Text="{Binding Path=Name}" /><TextBlockMargin="5,0,0,0"VerticalAlignment="Center"Text="{Binding Path=ItemCount, StringFormat=數(shù)量:{0}}" /><Button Margin="5,0,0,0" Content="Sale" /></StackPanel></Expander.Header><ItemsPresenter /></Expander></ControlTemplate></Setter.Value></Setter></Style></GroupStyle.ContainerStyle></GroupStyle></ListBox.GroupStyle></ListBox>

?

?

?

  從16行可以看出,GroupStyle定義的是控件內(nèi)部樣式,所以有人嘗試在這里綁實(shí)體數(shù)據(jù)屬性的話肯定是失敗的,注意25行只能是Name,不管分組的屬性叫什么名,這都只能是Name,我寫了個(gè)Button在里面,如果想知道為什么只能是Name,寫個(gè)Click處理,把Button的DataContext打印出來就什么都知道了。如果想在這里做更多的處理,比如進(jìn)行一些負(fù)責(zé)的運(yùn)算,可以寫加轉(zhuǎn)換器。

  這里只是弄了一個(gè)原始的Expander裝載分組控件,需要美化可以另寫樣式。

  以下是后臺(tái):

?

public partial class WindowListBoxDemo : Window{public ObservableCollection<ModelFile> CollectionModelFile = new ObservableCollection<ModelFile>();public WindowListBoxDemo(){InitializeComponent();CollectionModelFile.Add(new ModelFile() { FileName = "WPF進(jìn)化史", AuthorName = "王鵬", UpTime = "2014-10-10" });CollectionModelFile.Add(new ModelFile() { FileName = "WPF概論", AuthorName = "大飛", UpTime = "2014-10-10" });CollectionModelFile.Add(new ModelFile() { FileName = "WPF之美", AuthorName = "小蟲", UpTime = "2014-10-11" });CollectionModelFile.Add(new ModelFile() { FileName = "WPF之道", AuthorName = "青草", UpTime = "2014-11-11" });CollectionModelFile.Add(new ModelFile() { FileName = "WPF之禪", AuthorName = "得瑟鬼", UpTime = "2014-11-11" });CollectionModelFile.Add(new ModelFile() { FileName = "WPF入門", AuthorName = "今晚吃什么", UpTime = "2014-11-11" });CollectionModelFile.Add(new ModelFile() { FileName = "WPF神技", AuthorName = "無間道王二", UpTime = "2014-12-12" });CollectionModelFile.Add(new ModelFile() { FileName = "WPF不為人知之密", AuthorName = "星期八", UpTime = "2014-12-12" });CollectionModelFile.Add(new ModelFile() { FileName = "WPF之革命", AuthorName = "兩把刀", UpTime = "2014-12-12" });lbMain.ItemsSource = CollectionModelFile;ICollectionView cv = CollectionViewSource.GetDefaultView(lbMain.ItemsSource);cv.GroupDescriptions.Add(new PropertyGroupDescription("UpTime"));}}public class ModelFile{public string FileName { get; set; }public string AuthorName { get; set; }public string UpTime { get; set; }}

?

?

?

  重點(diǎn)是28、29行,有了這兩句,ListBox就能準(zhǔn)確得分組顯示了,其他ItemsControl的分組類同。

  至此一個(gè)簡單的ListBox分組顯示就完成了,Demo已放群里,需要的可以下載來看。

posted on 2018-09-21 21:36 NET未來之路 閱讀(...) 評(píng)論(...) 編輯 收藏

轉(zhuǎn)載于:https://www.cnblogs.com/lonelyxmas/p/9688570.html

總結(jié)

以上是生活随笔為你收集整理的WPF里ItemsControl的分组实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。