1

我有一个 WPF 组合框,如下所示:

<ComboBox 
   ItemsSource="{Binding Source={StaticResource myList}}"
   SelectedItem="{Binding Path=mySelectedItem}"
/>

我遇到的问题是,当绑定值更改时,组合框文本框中的选定值不会更新。(注意 - 组合框列表中的值会更新)。

我正在使用 MVVM,因此我可以在绑定更改时在视图模型中检测并调用属性更改事件,这是更新组合框,而不是文本框中显示的值。

我认为这可以在组合框的模板中完成 - 以某种方式使文本框绑定到组合框的选定项,或者在更新时总是更新?

编辑:

我没有说清楚 - 我确实正确实施了 INotifyPropertyChanged,当值更改时,我为 myList 和 mySelectedItem 提高 PropertyChanged。问题是组合框中的文本框没有刷新。

我发现了一个类似的问题:

WPF ComboBox SelectedItem 未更新

这给出了答案的提示,但不幸的是还不够。

4

3 回答 3

0

很可能您mySelectedItem的不是依赖属性。或者,或者,包含类不实现INotifyPropertyChanged.

考虑当您的值既不是依赖属性也不是INotifyPropertyChanged. 在这种情况下,WPF 没有机会知道其值已更改,因此该值在开始时仅加载一次(使用反射)。

对于依赖属性的情况,或者当包含对象支持INotifyPropertyChanged时,WPF 框架可以订阅值的变化,从而更新组合框。

于 2010-03-18T00:01:12.383 回答
0

如果您希望所选项目在“myList”集合后面的值发生变化时发生变化,那么它不会发生变化。如果您使用 MVVM 并且正在视图模型中实现 INotifyPropertyChanged。然后,当您为 myList 提升 PropertyChanged 时,如果您希望它以任何方式重新绑定或更改,您还应该为“mySelectedItem”提升它。

于 2010-03-18T00:15:58.967 回答
0

我已经在这里为你更新了我的答案

希望能帮助到你!!

于 2010-03-19T05:05:03.677 回答