【问题标题】:WPF ComboBox bound with object list and display less different value in selected item than in the item listWPF ComboBox 与对象列表绑定,在所选项目中显示的值比在项目列表中显示的值更少
【发布时间】: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; }
}

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

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

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

【问题讨论】:

标签: c# wpf list data-binding combobox


【解决方案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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    相关资源
    最近更新 更多