【问题标题】:Set Default Value For ComboBox设置组合框的默认值
【发布时间】:2011-06-22 16:17:08
【问题描述】:

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

--选择项目--

项目1

项目2

项目3

我不希望 --Select Item-- 出现在列表中,只出现在组合框本身上。 我也不希望这个值是可编辑的。

谢谢。

【问题讨论】:

  • 这不是默认值,而是null的表示形式。

标签: c# wpf combobox


【解决方案1】:

您可以覆盖默认模板并在其中包含一个 TextBlock,该文本块仅在 SelectedItemnull 时可见(为此使用带有 datatrigger 的样式)。要获取默认模板,您可以修改check MSDNDefault WPF Themes 链接)。

【讨论】:

  • 我选择了这条路。谢谢。
【解决方案2】:

为此,您必须扩展组合框类并添加此额外的基本功能。我首先编写一个接受默认值的方法,然后编写一个新方法来检索排除默认项目的项目列表。

您可能还想在选择默认值时处理返回 NULL,以及可能考虑调整选定项目的选定索引以考虑在列表中有一个额外的项目,例如

【讨论】:

  • 更改控件的行为应该是最后的手段,当然在 WPF 中。
【解决方案3】:

我认为最简单的方法是使用简单的样式:

<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"。

【讨论】:

    猜你喜欢
    • 2014-02-14
    • 2015-02-08
    • 2017-10-03
    • 2011-10-16
    • 1970-01-01
    • 2014-02-15
    • 1970-01-01
    • 2011-10-11
    相关资源
    最近更新 更多