我是 MVVW 模式的新手,所以如果我问的是一个非常基本的问题,请原谅我。
我有两个 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));
}
}
}