当没有选择任何项目(所选索引为-1)时,如何设置组合框显示的文本?

本文关键字:设置 何设置 组合 文本 显示 项目 任何 索引 有选择 | 更新日期: 2023-09-27 18:10:50

我有一个ComboBox,它是数据绑定,我不能插入哨兵项目。如果组合框中没有选择值,我想显示一个默认字符串。

我已经尝试使用一个样式:

<ComboBox.Style>
    <Style TargetType="ComboBox">
        <Style.Triggers>
            <DataTrigger Binding="{Binding RelativeSource={RelativeSource Self}, Path=SelectedIndex}" Value="-1">
                <Setter Property="Text" Value="(unconstrained)" />
            </DataTrigger>
        </Style.Triggers>
    </Style>
</ComboBox.Style>

但是这完全破坏了数据绑定(没有可选择的值)。

当没有选择任何项目(所选索引为-1)时,如何设置组合框显示的文本?

你可以试试这个(不是很幸运)解决方案:您可以在列表中添加另一个元素,在第一个位置设置值"(unconstrained)",并在XAML中将SelectedIndex设置为0。然后,当选择更改时,从ComboBox的基础列表中删除此元素,并将所选索引向上移动一个位置(因为列表的头部已被删除)。

这一点也不优雅,但似乎是唯一的解决方案,因为ComboBox没有某种Header属性,我不确定Text对它做了什么(可能它只是继承)。