WPF / MVVM中的ComboBox,带有null和空字符串

时间:2013-01-16 18:21:25

标签: c# wpf mvvm combobox inotifypropertychanged

我的WPF / MVVM项目中的ComboBox有问题。更改ViewModel(我正确使用所有内容:INotifyPropertyChangedObservableCollection等)后,ComboBox并不总是更改其值。我调试了它,ViewModel的getter返回了正确的值(string.Empty),但ComboBox显示了列表中的值。下面的一些代码:

// It doesn't work.
<ComboBox ItemsSource="{Binding ItemsCollection}" SelectedItem="{Binding SelectedItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>

// It works.
<TextBlock Text="{Binding SelectedItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/>

如果SelectedItem为string.Emptynull,则TextBlock会正确更新,但如果SelectedItem为string.Empty,则ComboBox未正确更新(旧值保留)。仅当SelectedItem为null值时才会清除它 为什么会这样?

// 编辑

也许我解释错了。我有两个网格:在左边我有文件树,在右边我有所选文件的属性。当我第一次选择没有setted属性的文件A时,ComboBox为空。如果我选择已设置此属性的文件B,它将在ComboBox中出现。接下来,如果我选择具有空属性的文件C,旧值将保留在ComboBox中(从选定文件之前 - B)。如果C中的此属性为null,而非string.Empty,则会清除ComboBox。

1 个答案:

答案 0 :(得分:0)

对ComboBox使用CollectionViewSource而不是ObservableCollection。

相关问题