私は MVVW パターンにまったく慣れていないので、非常に基本的な質問をしている場合はご容赦ください。
私は 2 つの ViewModel を持っています。それらを TreeViewViewModel と ListViewViewModel と呼びます。TreeViewViewModel は、そのビューの IsSelected プロパティにバインドします。IsSelected が変更されるたびに、ビューを更新できるように ListViewViewModel に通知する必要があります。
オンラインでいくつかの調査を行った後、良い解決策のように見える EventAggregator に出会いました。
これは正しい解決策ですか?もしそうなら、これを実装するにはどうすればよいですか?または、検討すべきより良い解決策はありますか?以下は、EventAggregator がイベントを発行する ViewModel にどのように統合されるかを簡略化したものです。
public class TreeViewViewModel : INotifyPropertyChanged
{
public bool IsSelected
{
get { return _isSelected; }
set
{
if (value == _isSelected)
return;
_isSelected = value;
OnPropertyChanged("IsSelected");
// Is this sane?
_eventAggregator.GetEvent<TreeViewItemSelectedEvent>().Publish(value);
}
}
protected virtual void OnPropertyChanged(string propertyName)
{
if (PropertyChanged != null)
{
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
}
}