我有一个组合框,我在其中加载此类的元素
public class ComboBoxTypeItem
{
public string Type { get; set; }
public BitmapSource Icon { get; set; }
public ComboBoxTypeItem(string type)
{
this.Type = type;
switch (type)
{
case PLMC.SPEC_REQ_TYPE:
Icon = new BitmapImage(new Uri("Resources/spec.png", UriKind.Relative));
break;
case PLMC.RAZDEL_REQ_TYPE:
Icon = new BitmapImage(new Uri("Resources/rst.png", UriKind.Relative));
break;
case PLMC.REQ_TYPE:
Icon = new BitmapImage(new Uri("Resources/requirement.png", UriKind.Relative));
break;
case PLMC.REQ_ND_TYPE:
Icon = new BitmapImage(new Uri("Resources/requirementnd.png", UriKind.Relative));
break;
default:
break;
}
}
}
我需要在打开组合框时,将要选择的项目显示为带有名称字段值的字符串列表,并且在组合框中选择项目时,显示所选项目的图标(图标字段) 显示。
我尝试通过 DisplayMemberPath 设置绑定,但没有帮助
首先创建一个ComboBoxTypeListing类
public class ComboBoxTypeListing
{
public List<ComboBoxTypeItem> ComboBoxTypeItems { get; set; }
public ComboBoxTypeListing()
{
ComboBoxTypeItems = new List<ComboBoxTypeItem>
{
new ComboBoxTypeItem("type1"),
new ComboBoxTypeItem("type2"),
new ComboBoxTypeItem("type3"),
new ComboBoxTypeItem("type4"),
};
}
}
并将此类设置为 MainWindow.xaml 中的数据上下文。 您可以使用 ItemTemplate 自定义您的组合框。
<ComboBox ItemsSource="{Binding ComboBoxTypeItems}">
<ComboBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image Width="20" Height="20" Source="{Binding Icon}"/>
<TextBlock Margin="5 0" Text="{Binding Type}"></TextBlock>
</StackPanel>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>