在 WPF 中,似乎不可能从组合框中选择(使用鼠标)“空”值。Edit澄清一下,这是 .NET 3.5 SP1。
这是一些代码来说明我的意思。首先,C# 声明:
public class Foo
{
public Bar Bar { get; set; }
}
public class Bar
{
public string Name { get; set; }
}
接下来是我的 Window1 XAML:
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<StackPanel>
<ComboBox x:Name="bars"
DisplayMemberPath="Name"
Height="21"
SelectedItem="{Binding Bar}"
/>
</StackPanel>
</Window>
最后,我的 Window1 类:
public partial class Window1 : Window
{
public Window1()
{
InitializeComponent();
bars.ItemsSource = new ObservableCollection<Bar>
{
null,
new Bar { Name = "Hello" },
new Bar { Name = "World" }
};
this.DataContext = new Foo();
}
}
与我一起?我有一个 ComboBox,其项目绑定到 Bar 实例列表,其中一个为 null。我已将窗口绑定到 Foo 的实例,并且 ComboBox 正在显示其 Bar 属性的值。
当我运行此应用程序时,ComboBox 以空显示开始,因为 Foo.Bar 默认情况下为 null。没关系。如果我使用鼠标放下组合框并选择“Hello”项目,这也有效。但是,如果我尝试重新选择列表顶部的空项目,组合框将关闭并返回到其先前的值“Hello”!
使用箭头键选择空值可以按预期工作,并且以编程方式设置它也可以工作。只能用鼠标进行选择,不起作用。
我知道一个简单的解决方法是拥有一个代表 null 的 Bar 实例并通过 IValueConverter 运行它,但是有人可以解释为什么用鼠标选择 null 在 WPF 的 ComboBox 中不起作用吗?