【发布时间】:2022-08-14 18:13:11
【问题描述】:
例如,我的ViewModel 做某事。在那之后,我想通知我的View,以便做一些只能在View 中完成的事情。
就像是;
public class MyViewModel : ViewModelBase{
...
private void DoSomething(){
//raise the event here and notify the View
}
}
然后在视图中;
public MyView(){
InitializeComponent();
...
}
private void ViewModelSaidDoSomething(){
//The View Model raises an event, do something here about it...
}
在不破坏 MVVM 概念的情况下这可能吗?
-
一般没有错。如果
DoSomething是公共方法,您可以考虑使用 async/await 代替事件。 -
\"在不破坏 MVVM 概念的情况下这可能吗?\"它不仅与 MVVM 概念兼容,而且完全正确的方式去做吧。
-
如果您使用事件,那么您应该使用弱事件模式。这是内置于绑定工作方式的。所以你可以使用事件,但 imo 这是一个糟糕的选择。我更喜欢视图中的依赖属性和更改处理程序。将其绑定到视图模型中的属性。在视图模型中更改该属性,视图将执行您的事件处理操作。