在項(xiàng)目開發(fā)的時(shí)候用到了ComboBox
分組的功能纵势,開始本來想打算自己寫一個(gè)自定義控件的幔嫂,后來查了下相關(guān)資料纱昧,系統(tǒng)組件中已經(jīng)支持ComboBox
的分組功能,如下所示為分組后的效果圖缀去,下面來簡(jiǎn)單介紹下怎么實(shí)現(xiàn)的侣灶。
ComboBox.png
1.添加ComboBox控件
首先在XAML
文件中添加一個(gè)ComboBox
控件,并添加ComboBox.GroupStyle
缕碎,分組主要使用的是這個(gè)節(jié)點(diǎn)褥影,然后再通過TextBlock
來顯示分組的名稱。
<ComboBox x:Name="comboBox" >
<ComboBox.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</ComboBox.GroupStyle>
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
2.添加數(shù)據(jù)
定義實(shí)體類
首先定義一個(gè)實(shí)體類咏雌,定義Name
和Category
兩個(gè)屬性凡怎,分別用于顯示列表上的名稱和組名。
public class Item
{
public string Name { get; set; }
public string Category { get; set; }
}
添加數(shù)據(jù)
定義一個(gè)List
赊抖,再往數(shù)組中添加測(cè)試數(shù)據(jù)统倒,然后再使用ListCollectionView
來組裝列表數(shù)據(jù),最后將ListCollectionView
對(duì)象賦值給ComboBox
的ItemsSource
熏迹,如下所示:
List<Item> items = new List<Item>();
items.Add(new Item() { Name = "Item1", Category = "A" });
items.Add(new Item() { Name = "Item2", Category = "A" });
items.Add(new Item() { Name = "Item3", Category = "A" });
items.Add(new Item() { Name = "Item4", Category = "B" });
items.Add(new Item() { Name = "Item5", Category = "B" });
ListCollectionView lcv = new ListCollectionView(items);
lcv.GroupDescriptions.Add(new PropertyGroupDescription("Category"));
this.comboBox.ItemsSource = lcv;
只需簡(jiǎn)單的兩步檐薯,就可以實(shí)現(xiàn)一個(gè)下拉分組的列表凝赛。
個(gè)人博客