绑定更改时WPF Combobox文本框不会更新

时间:2010-03-17 23:46:12

标签: c# wpf xaml combobox selecteditem

我有一个WPF CombBox如下:

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

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

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

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

修改

我没说清楚 - 我确实正确实现了INotifyPropertyChanged,当值发生变化时,我为myList和mySelectedItem引发了PropertyChanged。问题是组合框内的文本框没有刷新。

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

WPF ComboBox SelectedItem not Updating

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

3 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

我已为您更新了我的答案here

希望它有所帮助!!