2010-03-03 122 views
1

我想有一个城市选项组合框选择,其中一个选项是一个空的选项(没有城市)。 itemsource绑定到“城市”对象列表。该列表包含空值以表示空白选项。 SelectedItem绑定到“城市”类型的属性。除了在组合框中选择空选项的情况之外,一切都可以工作。绑定到SelectedItem的属性不会更新为空值,而是保持先前的选择。我怎么能解决这个问题呢?Combobox与空值 - SelectedItem绑定

感谢您asnwer 格雷格

回答

0

这不是我的经验。我有以下XAML:

<TextBlock Text="{Binding ElementName=_cbx, Path=SelectedItem}" Margin="20" /> 
<ComboBox x:Name="_cbx" ItemsSource="{Binding Cities}" HorizontalAlignment="Left" SelectionChanged="OnNewCity" /> 

我创建了一个名为性能在城市代码隐藏List和与是字符串,空值填充它。 当选择null时,SelectedItem是一个ComboBoxItem。

在OnNewCity中,我填充另一个基于SelectedItem的文本框,并且看到相同的行为。

您可以提供有关您的XAML和代码的更多信息吗?

编辑作者意见后:

谢谢你的XAML。我用同一个城市类,而不是一个字符串列表,我得到了和你一样的行为。 SelectedCity中的断点显示调用者未被调用。 当City对象为null时,SelectedItem属性的类型为ComboBoxItem,因此我的猜测是WPF查找与ComboBoxItem兼容的SelectedCity属性以调用setter。它在这种情况下找不到。 我改变了我的代码隐藏设置类型对象的SelectedCity。在这种情况下,即使对于一个无效的城市,二传手也会被调用!

我不确定改变SelectedCity的类型是一个好方法。类型对象不应被过度使用。但是你可以有另一个属性只用于绑定(和类型对象),它在类型检查后正确设置SelectedCity。

另一个更好的解决方案是考虑将空白城市放在绑定列表中是否合理。你可以删除这个或有一个特殊的名字,将代表null的特殊城市?

+0

这里是我使用它的方式,Cities是客户类型为“City”的对象列表加上空值, SelectedCity属性也是类型“城市” – Greg 2010-03-03 12:44:49

相关问题