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