C# MVVM DataGrid 绑定(bind)策略?

标签 c# wpf data-binding mvvm datagrid

有什么区别:

<DataGrid
    ItemsSource="{Binding MyCollection}"
/>

和...

<CollectionViewSource x:Key="CollectionData" Source="{Binding MyCollection}"/>
...
<DataGrid
    DataContext="{StaticResource CollectionData}"
    ItemsSource="{Binding}"
/>

它们似乎都有效。唯一的区别是第二个片段,我无法绑定(bind)到 SelectedItem。那么为什么有人会选择一种策略而不是另一种策略呢?为什么有人不直接使用第一个片段?谢谢。

最佳答案

MSDN 声明...

CollectionViewSource has a View property that holds the actual view and a Source property that holds the source collection.

CollectionViewSource将实际集合与表示集合的 View 分开。这使您能够更改可见集合的视觉结构(考虑在您键入时过滤掉某些项目)而无需实际更改基础集合。它是包含需要视觉表示的对象的实际集合的包装器。 Bea 很棒 article关于它。

此外,您会注意到在第二个示例中 CollectionViewSource 中发生了显式包装...

Source="{Binding MyCollection}"

然后 CollectionViewCource 现在通过 DataGrid 绑定(bind),提供我之前提到的分离;而在您的第一个示例中,该集合直接绑定(bind)到。

关于C# MVVM DataGrid 绑定(bind)策略?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4402794/

相关文章:

c# - MassTransit 3,其中 AzureServiceBus 在队列名称前添加斜杠

c# - 从其他表单调用时,DataGridView.DataSource 返回空 DataTable

c# - WPF 更改按钮的角半径,同时仍然使用按钮的默认样式

java - 多个组件的 Swing 数据绑定(bind)

c# - 使用编程排序绑定(bind)到 DataGridView 的可排序 BindingList

c# - 自定义基于角色的授权(无成员(member)资格)

c# - 正则表达式在 .NET 中不起作用

wpf - ViewModel 中的 DependencyProperty 注册

c# - WPF强制按下MouseDevice

javascript - ReactJS - 复选框 onChange 事件未触发