2011-04-07 28 views
4

我明白WPF的方式支持DataGrid中和列表框(即增加新的項目和刪除刪除的)的自動更新與INotifyCollectionChanged接口的ObservableCollection工具。但由於某些原因,我似乎完全成功地綁定了來自EntityFramework的EntityCollection<T>,這似乎並未實現INotifyCollectionChanged。有沒有其他方式WPF是這樣做的?綁定WPF的DataGrid直接到EntityCollection <T>

我只是想知道這是怎麼工作的。

編輯

下面是答案的相關部分。簡而言之,它與WPF和WinForms綁定「一起工作」。

EntityCollection目前不 實現INotifyCollectionChanged, 這是通知集合更改「新」標準接口 。 但是,您可以 獲得EntityCollection綁定列表(和 其數據綁定通常會得到 當你通過和EntityCollection 作爲數據源)是一個IBindingList的 其中有通知了自己的「老」的標準方式 收集更改 (即ListChanged事件)。通常,WinForms和WPF數據綁定 知道如何處理這個接口。

回答

2

顯然這裏有一個bug filed,但它被封爲「按設計」(至少不適用於.NET 4)。

As this post解釋說,EntityCollection有效地使用了「舊」或WinForms方式的列表更改通知,它使用IBindingList。而WPF使用「新」INotifyCollectionChanged接口。

這個blog post解釋了一個很好的方式來包裝EntityCollection與自定義ListCollectionView,你可以分配給ItemsSource屬性。

+0

您的鏈接給我的答案,但你引用了錯誤的一部分! :)儘管如此。謝謝。 – 2011-04-08 00:29:34

+0

從「這個帖子」迭戈乙維加上面鏈接,「綁定列表,你可以獲取EntityCollection (和數據綁定當你通過和EntityCollection 作爲數據源通常會獲得)是一個IBindingList的...的EntityCollection 其綁定列表總是同步的兩個增刪」 – Kimberly 2011-04-08 00:29:40

+0

@Kimberly,是啊,感謝兩種方式 - 我已經更新了我與回答問題。謝謝! – 2011-04-08 00:31:04

2

你可能有一個看EntityObservableCollection可以在的WPF Application Framework (WAF)BookLibrary示例應用程序中找到。這一個確保WPF綁定識別所有更新。