设置组合框的默认值
本文关键字:默认值 组合 设置 | 更新日期: 2023-09-27 18:00:07
尝试对此进行一些搜索,但找不到我需要的确切内容。我想要一个包含硬编码项目的组合框,但包含一个默认字符串。例如:
--选择项目-
第1项
第2项
第3项
我不希望--选择项目--出现在列表中,只希望出现在组合框本身上。此外,我不希望此值是可编辑的。
谢谢。
您可以覆盖默认模板并在其中包含一个TextBlock,该TextBlock只有在SelectedItem
是null
时才可见(为此使用带有datatrigger的样式)。要获得默认的tenmplate,您可以修改MSDN(Default WPF Themes
链接)。
要做到这一点,你必须扩展组合框类并添加这个额外的基础。我首先要编写一个接受默认值的方法,然后编写一个新方法来检索排除默认项的项列表。
当选择默认值时,您可能还想处理返回NULL的问题,也可能考虑调整所选项目的选定索引,以考虑列表中有一个额外的项目,例如
我认为最简单的方法是使用简单的样式:
<ComboBox>
<ComboBox.Style>
<Style TargetType="ComboBox">
<Setter Property="IsEditable" Value="True" />
<Setter Property="IsReadOnly" Value="True" />
<Style.Triggers>
<Trigger Property="SelectedIndex" Value="-1">
<Setter Property="Text" Value="-- Select Item --" />
</Trigger>
</Style.Triggers>
</Style>
</ComboBox.Style>
</ComboBox>
设置IsEditable="True"将启用组合框上的Text属性。为了确保Text属性不可编辑,还需要IsReadOnly="True"。