向DelegateCommand提供回调?

时间:2011-05-21 17:25:07

标签: silverlight mvvm

在我的Silverlight应用程序中,我有一个绑定到ICommand的按钮,它会将一些数据发布到Web服务。

完成后,我希望Command触发对View的回调,让视图知道特定Command已完成(我希望视图关闭)。

有没有办法将回调操作传递给DelegateCommand

我如何通知View ViewModel已完成?

2 个答案:

答案 0 :(得分:1)

您可以使用几种不同的方法来实现这一目标。一种是注入特定于视图的服务,该服务将在用户界面层上执行操作。视图模型将在注入的服务上调用特定方法。展示了一个这样的例子here

如果您不想将视图特定服务注入视图模型,则可以在视图模型上公开事件,如CloseWindow。此事件需要在view.xaml.cs文件中订阅,并且可以通过事件处理程序方法关闭视图页面。

希望这有帮助。

答案 1 :(得分:1)

从ViewModel到视图的任何通信都应该通过消息传递完成(恕我直言)(这是一种“松耦合事件”机制)。所以,我认为一个很好的方法就是从ViewModel发送一条消息(你可以使用MVVM Light中的Messenger类)到关闭它自己的视图。不需要回调。

希望这会有所帮助;)