c# - 将 ComboBox 绑定(bind)到 CollectionViewSource 的正确方法

标签 c# wpf collectionviewsource

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

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

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

当绑定(bind)到现有的 SelectedEntity 时,它工作正常。

当我尝试绑定(bind)到 SelectedEntity 时,它没有我想要显示列表中第一个项目的产品。因此我尝试使用 Products.View.MoveCurrentToFirst(),但仍然没有显示第一个项目。

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

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

最佳答案

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

对我来说,我发现最好将 SelectedItem 绑定(bind)到我的实体的导航属性并将 SelectedValue 绑定(bind)到我的实体的值属性。

希望对您有所帮助。

关于c# - 将 ComboBox 绑定(bind)到 CollectionViewSource 的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13274763/

相关文章:

c# - 如何获取当前 Windows 帐户的 SID?

wpf - 如何使WPF行缩小以适合内容

c# - 与 CollectionViewSource 绑定(bind)

c# - WPF MVVM 层次结构选择项

wpf - CollectionViewSource 仅在第一次绑定(bind)到源时排序

c# - 注册所有在应用程序启动时实现接口(interface)的类(Web API)

c# - LINQ - Distinct 被忽略了吗?

wpf - FontSize 未在 Contentpresenter 和 ContentControl 中继承的解决方法

c# - Windows 服务中的异常处理最佳实践?

WPF DataGrid DataGridHyperlinkColumn 绑定(bind)到 Uri