正确的方法将ComboBox绑定到CollectionViewSource

时间:2012-11-07 17:15:43

标签: c# wpf collectionviewsource

嘿,我的ViewModel上有一个CollectionViewSource属性。

此ViewModel以这种方式绑定到ComboBox:

<ComboBox   ItemsSource="{Binding Products.View}" 
SelectedItem="{Binding SelectedEntity.Product}"  
IsSynchronizedWithCurrentItem="True"/>

绑定到现有的SelectedEntity时,它可以正常工作。

当我尝试绑定到SelectedEntity时,该dos不具备我想要显示列表中第一个项目的产品。因此我尝试使用Products.View.MoveCurrentToFirst(),但仍未显示第一项。

当我设置SelectedEntity.Product = Products.View.CurrentItem.

时,它当然有效

我能做些什么来改进我的代码?这对我来说有点不对劲......

1 个答案:

答案 0 :(得分:0)

WPF中的SelectedItem选择整个实例,因此如果您将SelectedItem绑定到Entity的导航属性,那么一切都很好。但是,如果您将SelectedItem绑定到Entity的非导航属性,那么这可能是一个问题,我建议如果这是一个业务要求,而是绑定SelectedValue。

对我来说,我发现最好将SelectedItem绑定到我的Entity的导航属性AND SelectedValue绑定到我的Entity的value属性。

我希望这会有所帮助。