2010-04-23 274 views
1

我在使用WPF 4.0 DataGrid的添加功能自動向ObjectContext的EntitySet添加實體框架實體時遇到問題。這裏的設置:使用實體框架和WPF DataGrid的雙向數據綁定

的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> 

回答

1

有爲什麼要使用ListCollectionView什麼特別的原因?你是如何創建你的ListCollectionView

調用CollectionViewSource.GetDefaultView(ObjectQuery<>)產生BindingListCollectionView。我剛剛運行了一些測試,並調用IEditableCollectionView.AddNew()IEditableCollectionView.CommitNew()按預期的方式向實體集添加了新實體。

我建議你只需將ObjectContextObjectQuery<>屬性綁定到一個DataGridItemsSource和默認集合視圖將被使用,最終給你你所期望的行爲。

+0

我正在使用ListCollectionView,因此我可以對XAML中的實體進行排序。有沒有另一種方法來做到這一點,而不使用CollectionViewSource(ListCollectionView類型)? – 2010-04-23 18:41:34

+0

我還添加了用於創建ListCollectionView的XAML – 2010-04-23 18:47:59

+0

如何省略CollectionViewType =「{x:Type data:ListCollectionView}」?這應該創建一個默認的收集視圖,這應該爲你做的伎倆。 – wpfwannabe 2010-04-23 18:51:40