WPF ComboBox 与对象列表绑定,在所选项目中显示的值比在项目列表中显示的值更少

Posted

技术标签:

【中文标题】WPF ComboBox 与对象列表绑定,在所选项目中显示的值比在项目列表中显示的值更少【英文标题】:WPF ComboBox bound with object list and display less different value in selected item than in the item list 【发布时间】:2021-12-28 12:24:59 【问题描述】:

我有这个组合框:

<ComboBox
    ItemsSource="Binding imageFormats">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <DockPanel>
                <TextBlock DockPanel.Dock="Left" Text="Binding Extension" />
                <TextBlock DockPanel.Dock="Left" Text=" - " />
                <TextBlock DockPanel.Dock="Right" Text="Binding Description" />
            </DockPanel>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>

绑定到此列表的内容: private List&lt;ImageFormatModel&gt; imageFormats = new List&lt;ImageFormatModel&gt;();

public MainWindow()

    ComboBoxImages.ItemsSource = imageFormats;

对象ImageFormatModel 由两个字符串组成:

public class ImageFormatModel

    public string Extension  get; set; 
    public string Description  get; set; 

是否可能所选项目仅显示扩展名但在下拉菜单中均显示?

这两个值都应显示在此菜单中:

但如果我选择一个,则只有扩展名应该可见。不像这样:

【问题讨论】:

更改数据模板? ***.com/questions/3995853/… 【参考方案1】:

您可以将带有DataTriggerStyle 应用于要隐藏的TextBlock 元素:

<DataTemplate>
    <DockPanel>
        <DockPanel.Resources>
            <Style x:Key="tbStyle" TargetType="TextBlock">
                <Style.Triggers>
                    <DataTrigger Binding="Binding RelativeSource=RelativeSource AncestorType=ComboBoxItem" Value="x:Null">
                        <Setter Property="Visibility" Value="Collapsed"/>
                    </DataTrigger>
                </Style.Triggers>
            </Style>
        </DockPanel.Resources>
        <TextBlock DockPanel.Dock="Left" Text="Binding Extension" />
        <TextBlock DockPanel.Dock="Left" Text=" - " Style="StaticResource tbStyle" />
        <TextBlock DockPanel.Dock="Right" Text="Binding Description" Style="StaticResource tbStyle" />
    </DockPanel>
</DataTemplate>

【讨论】:

以上是关于WPF ComboBox 与对象列表绑定,在所选项目中显示的值比在项目列表中显示的值更少的主要内容,如果未能解决你的问题,请参考以下文章

在WPF中怎么将ComboBox的下拉列表的数据进行绑定?还有能不能TXT文件中的列表?

WPF{ComboBox绑定类对象, 下拉列显示的值,与取到的值}

在WPF中的Combobox中绑定

在WPF使用中读取一个配置文件获得一个结构体list,然后将数据绑定到Combobox下拉列表框中,如何实现?

具有在 XAML 中定义的选项的数据绑定 WPF ComboBox?

在wpf中怎么绑定comboBox的值