在 WPF 中,似乎不可能(用鼠标)从 ComboBox 中选择“null”值。编辑澄清一下,这是.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 实例列表,其中一个为空。我已将窗口绑定到 Foo 的一个实例,并且 ComboBox 正在显示其 Bar 属性的值。
当我运行这个应用程序时,ComboBox 以空显示开始,因为 Foo.Bar 默认为空。没关系。如果我使用鼠标将 ComboBox 放下并选择“Hello”项目,那也可以。但是,如果我尝试重新选择列表顶部的空项目,ComboBox 将关闭并返回其先前的“Hello”值!
使用箭头键选择空值按预期工作,并且以编程方式设置它也可以工作。它只是用不起作用的鼠标进行选择。
我知道一个简单的解决方法是拥有一个表示 null 的 Bar 实例并通过 IValueConverter 运行它,但是有人可以解释为什么用鼠标选择 null 在 WPF 的 ComboBox 中不起作用吗?