-1

我在 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}"/>

string.Empty如果 SelectedItem 是或,则 TextBlock 会正确更新null,但如果 SelectedItem 是 ,则 ComboBox 不会正确更新(旧值保留)string.Empty。只有当 SelectedItem 是null值时它才会被清除。
为什么会出现这种情况?

//编辑

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

4

1 回答 1

0

对 ComboBox 使用 CollectionViewSource 而不是 ObservableCollection。

于 2013-01-16T19:06:01.597 回答