Wpf 执行ApplicationCommand.Close时实际会发生什么

Wpf 执行ApplicationCommand.Close时实际会发生什么,wpf,command,Wpf,Command,我想标题中的问题已经很清楚了。当我打电话时会发生什么 ApplicationCommand.Close.Execute(null,null) 从我的viewmodel类 我有一个显示usercontrol的modeldialog。我有一个commandbinding到usercontrol中的一个按钮,该按钮在viewmodel中执行。我想在命令执行后关闭对话框。可以通过在执行事件结束时使用上述命令来完成 但我想知道这是否是正确的方法。这会导致任何不想要的效果吗?不幸的是,这不起作用 Appli

我想标题中的问题已经很清楚了。当我打电话时会发生什么

ApplicationCommand.Close.Execute(null,null)

从我的viewmodel类

我有一个显示usercontrol的modeldialog。我有一个commandbinding到usercontrol中的一个按钮,该按钮在viewmodel中执行。我想在命令执行后关闭对话框。可以通过在执行事件结束时使用上述命令来完成


但我想知道这是否是正确的方法。这会导致任何不想要的效果吗?

不幸的是,这不起作用

ApplicationCommands.Close是一个RoutedIEvent,它需要Commandtarget(任何IIInputElement)。它使用此命令目标引发routedevent

然后,您可以使用commandbinding处理此routedevent

从ViewModel中,您可以绑定ApplicationCommand.Close to Close按钮,然后在窗口中处理路由关闭事件

但是,在执行另一个命令后,您不能在ViewModel中调用
ApplicationCommand.Close.Execute(null,null)
,因为您没有CommandTarget(第二个null)

还有其他类似的线程,其中详细介绍了实现这一点的各种方法