与实体框架和 WPF DataGrid 的 2 路数据绑定

发布于 2024-08-29 20:57:32 字数 668 浏览 7 评论 0原文

我在使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

留一抹残留的笑 2024-09-05 20:57:32

您使用 ListCollectionView 有什么特殊原因吗?您如何创建 ListCollectionView

调用 CollectionViewSource.GetDefaultView( ObjectQuery<> ) 会生成 BindingListCollectionView。我刚刚运行了一些测试并调用 IEditableCollectionView.AddNew()IEditableCollectionView.CommitNew() 按预期将新实体添加到实体集。

我建议您只需将 ObjectContextObjectQuery<> 属性绑定到 DataGridItemsSource 和默认值将使用集合视图,最终为您提供您期望的行为。

Is there any particular reason why you are using ListCollectionView? How are you creating your ListCollectionView?

Calling CollectionViewSource.GetDefaultView( ObjectQuery<> ) yields a BindingListCollectionView. I have just run some tests and calling IEditableCollectionView.AddNew() and IEditableCollectionView.CommitNew() adds new entity to entity set as expected.

I suggest you simply bind your ObjectContext's ObjectQuery<> property to ItemsSource of a DataGrid and the default collection view will be used, ultimately giving you the behavior you expect.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文