WPFのComboBoxで表示項目をカスタマイズしたい場合、ComboBox.ItemTemplateを定義する。
ItemTemplateにDataTemplateを追加。
DataTemplateの中は好きなようにコントロールを配置出来る。
以下の例では、NameとAgeの2つのデータを表示させている。
<ComboBox x:Name="comboBox">
<ComboBox.ItemTemplate>
<DataTemplate>
<WrapPanel>
<TextBlock Text="{Binding Name}"/>
<TextBlock Text=" ("/>
<TextBlock Text="{Binding Age}"/>
<TextBlock Text=")"/>
</WrapPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
バインドするデータは以下のように定義していて、ListをComboBoxのItemsSourceプロパティへセットしている。
public partial class MainWindow : Window
{
public class ComboItem
{
public string Name { get; set; }
public int Age { get; set; }
}
public MainWindow()
{
InitializeComponent();
List<ComboItem> items = new List<ComboItem>();
items.Add(new ComboItem() { Name = "ichiro", Age = 22 });
items.Add(new ComboItem() { Name = "jiro", Age = 21 });
items.Add(new ComboItem() { Name = "saburo", Age = 20 });
this.comboBox.ItemsSource = items;
}
}
実行すると以下のようにNameに後にカッコ付きでAgeを表示できた。


コメント
コメントを投稿