当没有选择项目时,如何设置ComboBox显示的文本(选择的索引是-1)?

时间:2015-09-02 17:19:47

标签: c# wpf combobox

我有ComboBox数据绑定,我无法插入哨兵项目。如果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 个答案:

答案 0 :(得分:0)

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

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