为ComboBox设置默认值

时间:2011-06-22 16:17:08

标签: c# wpf combobox

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

- 选择项目 -

的Item1

项目2

项目3

我不希望--Select Item--出现在列表中,只在组合框本身上出现。 此外,我不希望此值可编辑。

感谢。

3 个答案:

答案 0 :(得分:2)

您可以覆盖默认模板并在其中包含仅在SelectedItemnull时才可见的TextBlock(使用带有datatrigger的样式)。要获取默认模板,您可以修改check MSDNDefault 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”。