我在 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}"/>
string.Empty
如果 SelectedItem 是或,则 TextBlock 会正确更新null
,但如果 SelectedItem 是 ,则 ComboBox 不会正确更新(旧值保留)string.Empty
。只有当 SelectedItem 是null
值时它才会被清除。
为什么会出现这种情况?
//编辑:
也许我解释错了。我有两个网格:左边有文件树,右边有选定文件的属性。A
当我第一次选择没有设置属性的file时,ComboBox 是空的。如果我选择B
设置了此属性的 file ,它将出现在 ComboBox 中。接下来,如果我选择C
具有空属性的文件,则旧值将保留在 ComboBox 中(从所选文件之前 - B
)。如果此属性来自C
is null
, not string.Empty
,则清除 ComboBox。