下拉列表中的默认文本

时间:2009-11-24 11:49:03

标签: wpf combobox unselect

我正在开发一个wpf应用程序,当使用Combo Box控件时,我正在为它分配ItemsSource。因此,它显示没有选择项目的项目列表,现在用户可以选择他选择的项目。当用户做出选择时,他没有选择撤销它。我希望他能够获得没有选择项目的初始状态。我怎么能这样做?

3 个答案:

答案 0 :(得分:1)

在Windows窗体编程中有多种方法也类似。您可以执行以下任一操作:

1)将空白或--None--记录添加到作为默认记录的组合框数据源中。 2)您可以监控按键事件并说使用ESC键将所选索引重置回-1 3)如果您的组合框允许输入,您也可以允许它们清除文本并且如果文本字段为空,则将selectedindex设置为-1,以便它不会重置为所选值。

很多时候我的用户更喜欢选项1,但这是我的用户。

这应该给你一些选择。

答案 1 :(得分:1)

我每次都要重置回默认空白记录(索引为-1)的--None--记录。如果您正在处理“选择已更改”的事件或ComboBox上的某些内容,那么如果您将该框指向-1,则可能会出现空引用错误,并且它也很简单,因为您必须进行的唯一更改是设置的所选索引为(比方说)0而不是-1。

myComboBox.SelectedIndex = 0; //where 0 is a given default content entry.

答案 2 :(得分:1)

一般来说,我发现如果我需要为WPF应用程序添加复杂性,将其添加到数据源比将其添加到XAML更有效。

在您的示例中,我将在我的数据源中修复此问题。如果我有:

public IEnumerable<Person> People { get {...} }

在我的数据源中,我添加了这个:

public IEnumerable<Person> PeopleWithNull
{
   get
   {
      return (new List<Person> { null }).Concat(People);
   }
}