WPF 在组合框标题中显示图像

问题描述 投票:0回答:1

我有一个组合框,我在其中加载此类的元素

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 设置绑定,但没有帮助

c# wpf data-binding combobox
1个回答
0
投票

首先创建一个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>
© www.soinside.com 2019 - 2024. All rights reserved.