与实体框架和 WPF DataGrid 的 2 路数据绑定
我在使用 WPF 4.0 DataGrid 的添加功能自动将实体框架实体添加到 ObjectContext 的 EntitySet 时遇到问题。设置如下:
DataGrid-->BoundTo-->ListCollectionView-->BoundTo-->EntitySet
当我以交互方式向 DataGrid 添加行时,EntitySet 中没有添加新实体。然而,更新行的单元格数据实际上会更新绑定实体的属性。
知道我可能做错了什么吗?
以下是 ListCollectionView 的 XAML:
<CollectionViewSource x:Key="FieldList"
Source="{Binding DB.Fields}"
CollectionViewType="{x:Type data:ListCollectionView}">
<CollectionViewSource.SortDescriptions>
<ComponentModel:SortDescription PropertyName="Name" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
I'm having trouble adding an Entity Framework entity to a ObjectContext's EntitySet automatically using the WPF 4.0 DataGrid's add functionality. Here's the setup:
DataGrid-->BoundTo-->ListCollectionView-->BoundTo-->EntitySet
When I interactively add a row to the DataGrid, the EntitySet does not have a new entity added to it. Updating the row's cell data does in fact update the bound entity's properties, however.
Any idea what I could be doing wrong?
Here is the XAML for the ListCollectionView:
<CollectionViewSource x:Key="FieldList"
Source="{Binding DB.Fields}"
CollectionViewType="{x:Type data:ListCollectionView}">
<CollectionViewSource.SortDescriptions>
<ComponentModel:SortDescription PropertyName="Name" />
</CollectionViewSource.SortDescriptions>
</CollectionViewSource>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您使用
ListCollectionView
有什么特殊原因吗?您如何创建ListCollectionView
?调用
CollectionViewSource.GetDefaultView( ObjectQuery<> )
会生成BindingListCollectionView
。我刚刚运行了一些测试并调用IEditableCollectionView.AddNew()
和IEditableCollectionView.CommitNew()
按预期将新实体添加到实体集。我建议您只需将
ObjectContext
的ObjectQuery<>
属性绑定到DataGrid
的ItemsSource
和默认值将使用集合视图,最终为您提供您期望的行为。Is there any particular reason why you are using
ListCollectionView
? How are you creating yourListCollectionView
?Calling
CollectionViewSource.GetDefaultView( ObjectQuery<> )
yields aBindingListCollectionView
. I have just run some tests and callingIEditableCollectionView.AddNew()
andIEditableCollectionView.CommitNew()
adds new entity to entity set as expected.I suggest you simply bind your
ObjectContext
'sObjectQuery<>
property toItemsSource
of aDataGrid
and the default collection view will be used, ultimately giving you the behavior you expect.