试图对此进行一些搜索,但找不到我需要的确切内容。我想要一个带有硬编码项目的组合框,但是包含一个默认字符串。例如:
- 选择项目 -
的Item1
项目2
项目3
我不希望--Select Item--出现在列表中,只在组合框本身上出现。 此外,我不希望此值可编辑。
感谢。
答案 0 :(得分:2)
您可以覆盖默认模板并在其中包含仅在SelectedItem
为null
时才可见的TextBlock(使用带有datatrigger的样式)。要获取默认模板,您可以修改check MSDN(Default WPF Themes
链接)。
答案 1 :(得分:1)
要做到这一点,你必须扩展组合框类并添加这个额外的基金。我首先编写一个接受默认值的方法,然后编写一个新方法来检索排除默认项目的项目列表。
您可能还希望在选择默认值时处理返回NULL,以及调查所选项目的选定索引以考虑列表中有额外项目,例如
答案 2 :(得分:1)
我认为最简单的方法是使用简单的风格:
<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”启用ComboBox上的Text属性。为了确保无法编辑Text属性,还需要IsReadOnly =“True”。