我的WPF / MVVM项目中的ComboBox有问题。更改ViewModel(我正确使用所有内容:INotifyPropertyChanged
,ObservableCollection
等)后,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.Empty
或null
,则TextBlock会正确更新,但如果SelectedItem为string.Empty
,则ComboBox未正确更新(旧值保留)。仅当SelectedItem为null
值时才会清除它
为什么会这样?
// 编辑:
也许我解释错了。我有两个网格:在左边我有文件树,在右边我有所选文件的属性。当我第一次选择没有setted属性的文件A
时,ComboBox为空。如果我选择已设置此属性的文件B
,它将在ComboBox中出现。接下来,如果我选择具有空属性的文件C
,旧值将保留在ComboBox中(从选定文件之前 - B
)。如果C
中的此属性为null
,而非string.Empty
,则会清除ComboBox。
答案 0 :(得分:0)
对ComboBox使用CollectionViewSource而不是ObservableCollection。