我想标题中的问题已经足够清楚了。当我打电话给
时会发生什么 ApplicationCommands.Close.Execute(null,null)
来自我的viewmodel类。
我有一个显示用户控件的modeldialog。我有一个命令绑定到usercontrol中的一个按钮,该按钮在viewmodel中执行。我想在执行命令后关闭对话框。可以使用上面的命令来完成到已执行事件的结尾。
但我想知道这是否是正确的方法。这会导致任何不良影响吗?
答案 0 :(得分:3)
不幸的是,这不起作用。
ApplicationCommands.Close是一个RoutedUiEvent,它需要一个Commandtarget(任何IInputelement)。它使用此命令目标来引发routedevent。
然后,您可以使用命令绑定来处理此路径。
从ViewModel中,您可以将ApplicationCommands.Close绑定到Close Button,然后在窗口中处理路由关闭事件。
但是,在执行另一个命令之后,由于没有CommandTarget(第二个空值),您无法在ViewModel中调用ApplicationCommands.Close.Execute(null,null)
还有其他一些类似How should the ViewModel close the form?的主题,详细介绍了实现此目的的各种方法。
http://adammills.wordpress.com/2011/02/16/mvvm-uses-for-applicationcommands-close/