[英]Datagrid Sorting (Still) Not Working with Entity Framework 4.0
[英]Entity Framework 4.0 Databinding with sorting not working
我想做一些我認為非常簡單的事情。 我想將生成的Entity Framework EntityCollection綁定到WPF DataGrid。 我也希望這個網格可以排序。
我嘗試過各種各樣的事情,包括使用CollectionViewSource。 然而,似乎沒有任何作用。 在EntityCollection周圍使用普通的CollectionViewSource給了我:
'System.Windows.Data.BindingListCollectionView' view does not support sorting.
好吧......奇怪。 我原以為這會起作用。 接下來在CollectionViewSource上,我嘗試設置:
CollectionViewType="ListCollectionView"
很好,排序現在有效。 但是等等,我現在無法使用網格添加或刪除實體,可能是因為ListCollectionView不支持實體框架上下文。
所以,我想我需要捕獲來自datagrid的事件,以便從我的上下文中手動添加或刪除實體。 現在我找不到要捕獲的事件來檢測添加......!
為什么這么難? 這應該是微軟應該設計的標准“演示”案例。
有任何想法嗎?
BindingListCollectionView
不是直接問題。 請參閱'System.Windows.Data.BindingListCollectionView'視圖不支持在Microsoft Connect上進行排序 ,以獲取不支持排序的詳細信息。
另一方面, ListCollectionView
顯然支持使用不同技術進行排序。
我也嘗試了以下代碼,它工作得很漂亮。 我基本上已經從代碼中的其他帖子實現了你的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.Survey
是一個ObjectQuery<Survey>
。 您是在顯示ObjectQuery
還是Linq-to-EF查詢? 前者顯然對我有用。 后者是我看到問題的地方。 這不應該奏效。
看起來,當chages發生時,View才會收到通知。 所以,我只是這樣做
myCollectionViewSource.View.Refresh(); //refresh CollectionViewSource of CollectionViewType="ListCollectionView"
添加/刪除列表項后。
但隨后整個狀態會刷新(例如,您必須重新重置預先選擇的排序)。 如果符合您的需要,您需要檢查。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.