2011-07-20 9 views
0

を更新した後、私はそうのようなCollectionViewSourceStaticResourceを使用してWPFのデータグリッドを持つEntity Frameworkのビュー(SQL Serverなど)に結合している...更新WPFデータグリッドは、基礎となるエンティティ(表)

<Window.Resources> 
<CollectionViewSource x:Key="TransmittalsSource" /> 
... 
<DataGrid x:Name="uxTransmittalDataGrid" Grid.Row="2" 
     ItemsSource="{Binding Source={StaticResource TransmittalsSource}}" 
... 

背後にあるコード、私はこのようなTransmittalsSourceのソースを割り当てるために、ボタンのクリックイベントを使用しています...

var transmittalsQuery = from t in _db.TransmittalsViews 
    select t; // I've remove the where clauses (filters) for readability. 
((CollectionViewSource)Resources["TransmittalsSource"]).Source = 
    transmittalsQuery; 

TransmittalsViewsは、SQL Serverデータベース内の表示オブジェクトです。データをグリッドに表示する前に、クロス集計操作を行う必要があるため、私はViewを使用しました。

もう1つのウィンドウでは、Transmittalsと呼ばれるTransmittalsViewsの基本テーブルの1つにアイテム(基本的にビュー列の1つを更新)を追加しています。今

_db.Transmittals.AddObject(_transmittal); 

、私はデータグリッドのデフォルトのビューを取得し、Refresh()を呼び出した場合でも、それは働いていません。

私はDataGridのDefaultViewを取得し、 'AddNew`メソッドを使用していますが、ソースが異なっていると考えていますが、これは不可能だと思います。

それで、それが元になった別のエンティティ(テーブル)を更新した後で、Viewオブジェクト(SQL Server)に基づくデータグリッドを強制的にリフレッシュするにはどうすればよいですか?現時点でコーディングがそれほど理想的ではないことを知っていますので、私が使ったテクニックのコメントもありがとうと思います。私はちょうどWPFを学び始めています:)

答えて

0

私はこの問題を回避するためにMergeOptionをOverwriteChangesに設定しました。

_db.TransmittalsViews.MergeOption = MergeOption.OverwriteChanges; 
関連する問題