限制视图不直接绑定到模型是绝对必要的吗?
您可以将模型公开为 VM 上的属性,然后让您的视图直接绑定到它,从而不让 VM 从模型订阅 INPC
就像是:
public class MyViewModel: INotifyPropertyChanged {
...
private MyModel _model;
public MyModel Model {
get {
return _model;
}
set {
if (value == _model)
return;
value = _model;
RaisePropertyChanged(() => Model);
}
}
...
}
在 xaml 中(什么时候MyViewModel
)DataContext
:
<TextBlock Text="{Binding Model.ModelProperty}" />
更新:
也许这有助于以PropertyChanged
“弱”的方式利用模型的事件
IWeakEventListener
使用 WeakEventManager 的中央事件分派可以使侦听器的处理程序被垃圾收集(或手动清除),即使源对象的生命周期超出侦听器也是如此。
用于
乔什·史密斯的 PropertyObserver
这应该有望解决您需要明确取消注册的问题?