2010-03-17 77 views
1

我有一个WPF CombBox如下:WPF组合框的文本框结合时,更新不及时改变

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

我的问题是,当绑定值的变化,组合框的文本框中选择的值不会更新。 (注 - 组合框列表中的值会更新)。

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

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

编辑:

我没有明确的 - 我正确执行INotifyPropertyChanged和值更改时我提出的PropertyChanged对myList中和mySelectedItem。问题在于组合框内的文本框不够清爽。

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

WPF ComboBox SelectedItem not Updating

其中给出一个答案的提示,但没有足够的不幸。

回答

1

我已经更新了我的回答对你here

希望它可以帮助!

+0

感谢Viky,非常感谢。 – WillH 2010-03-31 19:26:08

0

很可能您的mySelectedItem不是依赖项属性。或者,或者,包含类不执行INotifyPropertyChanged

请考虑您的值既不是依赖项属性也不是INotifyPropertyChanged的属性的情况。在这种情况下,WPF没有机会知道其值发生了变化,因此该值在开始时只加载一次(使用反射)。

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

0

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