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<ImageFormatModel> imageFormats = new List<ImageFormatModel>();
public MainWindow()
ComboBoxImages.ItemsSource = imageFormats;
对象ImageFormatModel
由两个字符串组成:
public class ImageFormatModel
public string Extension get; set;
public string Description get; set;
是否可能所选项目仅显示扩展名但在下拉菜单中均显示?
这两个值都应显示在此菜单中:
但如果我选择一个,则只有扩展名应该可见。不像这样:
【问题讨论】:
更改数据模板? ***.com/questions/3995853/… 【参考方案1】:您可以将带有DataTrigger
的Style
应用于要隐藏的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使用中读取一个配置文件获得一个结构体list,然后将数据绑定到Combobox下拉列表框中,如何实现?