私はWPFとMVVMを初めて使用し、「Jason Dolinger on Model-View-ViewModel」の記事と例から始めましたが、データバインディングに関していくつか質問があります。
1)彼のデモアプリケーションでは、ObservableCollectionアイテムのDependencyObjectをサブクラス化しています。INotifyPropertyChangedと比較した長所/短所は何ですか?
2)データグリッド/リストビューのモデルからビューを更新するための最良の方法は何ですか?彼の例では、Quoteオブジェクトが追加または更新されたときに、リスナーとして登録します。
_source.QuoteArrived += new Action<Quote>(_source_QuoteArrived);
ViewModelは、QuoteViewModelオブジェクトを作成してコレクションに追加するか、_quoteMapというディクショナリを使用して便利なQuoteViewModelオブジェクトに更新されたQuoteオブジェクトを設定することにより、ビューを更新します。
void _source_QuoteArrived(Quote quote)
{
QuoteViewModel qvm;
if (_quoteMap.TryGetValue(quote.Symbol, out qvm))
{
qvm.Quote = quote;
}
else
{
qvm = new QuoteViewModel();
qvm.Quote = quote;
this.Quotes.Add(qvm);
_quoteMap.Add(quote.Symbol, qvm);
}
}
Quoteオブジェクトが更新されたときにモデルからビューを更新するためのより良い方法はありますか、それとも辞書を作成する必要がありますか?INotifyPropertyChangedまたはDependencyObjectをサブクラス化するQuoteがなくても、Quoteオブジェクトが更新されたときにリストビューをすぐに更新できれば非常に簡単です。
ありがとう