设置组合框的默认值

本文关键字:默认值 组合 设置 | 更新日期: 2023-09-27 18:00:07

尝试对此进行一些搜索,但找不到我需要的确切内容。我想要一个包含硬编码项目的组合框,但包含一个默认字符串。例如:

--选择项目-

第1项

第2项

第3项

我不希望--选择项目--出现在列表中,只希望出现在组合框本身上。此外,我不希望此值是可编辑的。

谢谢。

设置组合框的默认值

您可以覆盖默认模板并在其中包含一个TextBlock,该TextBlock只有在SelectedItemnull时才可见(为此使用带有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"。