我有一个WPF CombBox如下:
<ComboBox
ItemsSource="{Binding Source={StaticResource myList}}"
SelectedItem="{Binding Path=mySelectedItem}"
/>
我遇到的问题是当绑定值发生更改时,组合框文本框中的选定值不会更新。 (注意 - 组合框列表中的值会更新)。
我正在使用MVVM,因此我可以在视图模型中检测绑定更改时调用属性更改事件,这是更新组合框,但不是文本框中显示的值。
我认为这可以在组合框的模板中完成 - 以某种方式使文本框绑定到组合框的选择项,或者在更新时始终更新?
修改
我没说清楚 - 我确实正确实现了INotifyPropertyChanged,当值发生变化时,我为myList和mySelectedItem引发了PropertyChanged。问题是组合框内的文本框没有刷新。
我发现了一个类似的问题:
WPF ComboBox SelectedItem not Updating
这给出了答案的提示,但遗憾的是还不够。
答案 0 :(得分:0)
很可能您的mySelectedItem
不是依赖属性。或者,包含类不会实现INotifyPropertyChanged
。
考虑您的值既不是依赖属性也不是INotifyPropertyChanged
的属性的情况。在这种情况下,WPF没有机会知道其值已更改,因此该值仅在开头加载一次(使用反射)。
对于依赖属性的情况,或者当包含对象支持INotifyPropertyChanged
时,WPF框架可以订阅值更改,从而更新组合框。
答案 1 :(得分:0)
如果您希望所选项目在“myList”集合后面的值发生更改时更改它。如果您使用MVVM并且您正在视图模型中实现INotifyPropertyChanged。然后,当您为myList引发PropertyChanged时,如果您希望以任何方式重新绑定或更改,也应该为'mySelectedItem'提升它。
答案 2 :(得分:0)
我已为您更新了我的答案here
希望它有所帮助!!