使用实体框架和WPF DataGrid进行双向数据绑定
我在使用WPF 4.0 DataGrid的add功能自动将实体框架实体添加到ObjectContext的EntitySet时遇到问题。以下是设置: 数据网格-->边界到-->列表集合视图-->边界到-->实体集 当我以交互方式向DataGrid添加行时,EntitySet没有添加新的实体。但是,更新行的单元格数据实际上会更新绑定实体的属性 知道我做错了什么吗 以下是ListCollectionView的XAML:使用实体框架和WPF DataGrid进行双向数据绑定,wpf,entity-framework,wpfdatagrid,Wpf,Entity Framework,Wpfdatagrid,我在使用WPF 4.0 DataGrid的add功能自动将实体框架实体添加到ObjectContext的EntitySet时遇到问题。以下是设置: 数据网格-->边界到-->列表集合视图-->边界到-->实体集 当我以交互方式向DataGrid添加行时,EntitySet没有添加新的实体。但是,更新行的单元格数据实际上会更新绑定实体的属性 知道我做错了什么吗 以下是ListCollectionView的XAML: <CollectionViewSource x:Key="FieldList
<CollectionViewSource x:Key="FieldList"
Source="{Binding DB.Fields}"
CollectionViewType="{x:Type data:ListCollectionView}">
<CollectionViewSource.SortDescriptions>
<ComponentModel:SortDescription PropertyName="Name" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
您使用
列表收集视图
有什么特殊原因吗?您是如何创建列表集合视图的
调用CollectionViewSource.GetDefaultView(ObjectQuery)
将生成一个BindingListCollectionView
。我刚刚运行了一些测试,并调用IEditableCollectionView.AddNew()
和IEditableCollectionView.CommitNew()
将新实体按预期添加到实体集
我建议您只需将ObjectContext
的ObjectQuery
属性绑定到DataGrid
的ItemsSource
,就会使用默认的集合视图,最终提供您所期望的行为。使用ListCollectionView
有什么特别的原因吗?您是如何创建列表集合视图的
调用CollectionViewSource.GetDefaultView(ObjectQuery)
将生成一个BindingListCollectionView
。我刚刚运行了一些测试,并调用IEditableCollectionView.AddNew()
和IEditableCollectionView.CommitNew()
将新实体按预期添加到实体集
我建议您只需将ObjectContext
的ObjectQuery
属性绑定到DataGrid
的ItemsSource
,然后将使用默认的集合视图,最终为您提供所需的行为。我使用的是ListCollectionView,以便可以对XAML中的实体进行排序。有没有其他方法不使用CollectionViewSource(类型为ListCollectionView)来执行此操作?我还添加了用于创建ListCollectionViewType的XAML,是否省略CollectionViewType=“{x:type data:ListCollectionView}”?这将创建一个默认的集合视图,该视图将为您完成此操作。当我尝试设置窗口的DataContext时,会得到“'System.Windows.Data.BindingListCollectionView'视图不支持排序”。这就是我最初改为ListCollectionView的原因。太糟糕了。在这种情况下,我只能考虑使用LitsCollectionView或其他让您满意的工具,并向提交逻辑中添加一些手动代码。您需要遍历集合视图中的项,并显式添加EntityState为EntityState.Detached的项。我使用的是ListCollectionView,以便可以对XAML中的实体进行排序。有没有其他方法不使用CollectionViewSource(类型为ListCollectionView)来执行此操作?我还添加了用于创建ListCollectionViewType的XAML,是否省略CollectionViewType=“{x:type data:ListCollectionView}”?这将创建一个默认的集合视图,该视图将为您完成此操作。当我尝试设置窗口的DataContext时,会得到“'System.Windows.Data.BindingListCollectionView'视图不支持排序”。这就是我最初改为ListCollectionView的原因。太糟糕了。在这种情况下,我只能考虑使用LitsCollectionView或其他让您满意的工具,并向提交逻辑中添加一些手动代码。您需要遍历集合视图中的项,并显式添加EntityState为EntityState.Detached的项。