2012-02-12 8 views
0

ItemsSource:生データのObservableCollectionです。 Converter:ItemsSourceで複雑な非線形変換を適用してビューモデルを生成する。コンバータの出力は普通のリストです。ItemsSourceにコンバーターが適用されている場合、DataGridを強制的に更新します。

NotifyPropertyChangedイベントでビューモデルレイヤーを作成する必要がありますが、これは何かのクイックプロトタイプです。ItemsSourceが更新されるたびにDataGrid再実行コンバーターを強制する簡単なトリックがあることを期待しています。

+0

文字列プロパティを追加して、コンバーターの内容を移動するのは難しいですか? – Paparazzi

+0

@BalamBalamでは、コンバータはアイテムレベルではなくリストレベルで変換されていません。変換は単純なマッピングではありません。同様の例は、カレンダーイベントのリストを変換し、それぞれが開始時刻と継続時間をdatetimeのリストに変換し、それぞれがboolプロパティ「何かここから始まる」と「何かここから終わります」を持っています。 –

答えて

0

コレクションが変更されたときにプロパティレベルの変更通知を発行できます。これにより、ItemsSourceバインディングの再評価が強制されます。ボタン - あなたのコレクションへの変更は、から来るん

すなわち

//Data being the ObservableCollection 
Data.CollectionChanged += (s,e) => OnPropertyChanged("Data"); 
+0

"データ"はObservableCollectionがItemsSourceに割り当てられていますか?このスニペットはどこに貼るべきですか? –

+0

@ user986080:プロパティの変更を許可する場合は、プロパティのセッターにハンドラーを接続する必要があります(名前付きのメソッドを使用して、そのプロパティーに割り当てられた前のインスタンスからハンドラーを切り離す必要があります)。プロパティのバッキングフィールドがreadonly(強くお勧めします)であれば、インスタンスは決して変更されないので、これを所有するクラスのコンストラクタに入れることができます。 –

1

?それが単なるプロトタイプであれば、リストを使用し、その間にCollectionViewを置き、明示的にリフレッシュするためにCollectionView.Refresh()を呼び出します。

OnPropertyChanged( "Data")のソリューション。ループするように見えます。

関連する問題