在我的Silverlight应用程序中,我有一个绑定到ICommand
的按钮,它会将一些数据发布到Web服务。
完成后,我希望Command
触发对View的回调,让视图知道特定Command
已完成(我希望视图关闭)。
有没有办法将回调操作传递给DelegateCommand
?
我如何通知View ViewModel已完成?
答案 0 :(得分:1)
您可以使用几种不同的方法来实现这一目标。一种是注入特定于视图的服务,该服务将在用户界面层上执行操作。视图模型将在注入的服务上调用特定方法。展示了一个这样的例子here。
如果您不想将视图特定服务注入视图模型,则可以在视图模型上公开事件,如CloseWindow。此事件需要在view.xaml.cs文件中订阅,并且可以通过事件处理程序方法关闭视图页面。
希望这有帮助。
答案 1 :(得分:1)
从ViewModel到视图的任何通信都应该通过消息传递完成(恕我直言)(这是一种“松耦合事件”机制)。所以,我认为一个很好的方法就是从ViewModel发送一条消息(你可以使用MVVM Light中的Messenger
类)到关闭它自己的视图。不需要回调。
希望这会有所帮助;)