wpf - Entity Framework 4.0 数据绑定(bind)与排序不起作用

标签 wpf entity-framework

我想做一些我认为很简单的事情。我想将生成的 Entity Framework EntityCollection 绑定(bind)到 WPF DataGrid。我也希望这个网格是可排序的。

我已经尝试了各种方法来实现这一点,包括使用 CollectionViewSource。但是,似乎没有任何效果。在 EntityCollection 周围使用普通的 CollectionViewSource 会给我:

'System.Windows.Data.BindingListCollectionView' view does not support sorting.

好吧……奇怪。我原以为这会奏效。接下来在 CollectionViewSource 上,我尝试设置:
 CollectionViewType="ListCollectionView"

太好了,排序现在有效。但是等等,我现在不能使用网格添加或删除实体,大概是因为 ListCollectionView 不支持 Entity Framework 上下文。

所以,我想我需要捕获来自数据网格的事件,以便从我的上下文中手动添加或删除实体。现在我找不到要捕获的事件来检测添加...!

为什么这么难?这应该是微软应该设计的标准“演示”案例。

有任何想法吗?

最佳答案

BindingListCollectionView不是直接的问题。见 'System.Windows.Data.BindingListCollectionView' view does not support sorting在 Microsoft Connect 上了解为什么它不支持排序的详细信息。

另一方面ListCollectionView显然支持使用不同的技术进行排序。

我也试过下面的代码,它工作得很好。我基本上已经从 the other post 实现了你的 XAML在代码中。

 DatabaseContext.ObjectStateManager.ObjectStateManagerChanged += (o, args) => Debug.WriteLine(args.Element.ToString());

 var collectionViewSource = new CollectionViewSource();
 ((ISupportInitialize)collectionViewSource).BeginInit();
 collectionViewSource.CollectionViewType = typeof (ListCollectionView);
 collectionViewSource.Source = ((IListSource) DatabaseContext.Survey).GetList();
 collectionViewSource.SortDescriptions.Add(new SortDescription {PropertyName = "Name"});
 ((ISupportInitialize)collectionViewSource).EndInit();

 var editableCollectionView = (IEditableCollectionView)collectionViewSource.View;
 var survey = editableCollectionView.AddNew();

 // Before this point ObjectStateManager event has occurred and Debug Output is written to.

 editableCollectionView.CommitNew();
 DatabaseContext.SaveChanges(); // THIS WORKS TOO!

我的 DatabaseContext.SurveyObjectQuery<Survey> .您是否显示 ObjectQuery还是 Linq-to-EF 查询?前者显然对我有用。后者是我看到问题的地方。那不应该工作。

关于wpf - Entity Framework 4.0 数据绑定(bind)与排序不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2702434/

相关文章:

wpf - 当文本框处于焦点时更改容器的背景颜色

c# - MVVMLight 中 IoC 容器的好处

c# - 为WPF更改VideoLan DotNet中的音频流

asp.net-mvc-3 - 使用示例数据为 Entity Framework 提供种子数据库不会创建数据库

c# - 使用 MySQL 和 Entity Framework 的 ASP.NET 标识

c# - Entity Framework 在子类上是唯一的

wpf - 使用 MVVM,每个 UI 窗口是否都有自己的 ViewModel?

c# - 在 ScrollViewer wpf 中更改 ScrollBar 的背景颜色

c# - EF Core 通过空检查破坏了构造函数的目的

.net - EF 代码首先插入多行