Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在viewmodel中使用X按钮关闭WPF对话框_C#_Wpf_Mvvm - Fatal编程技术网

C# 在viewmodel中使用X按钮关闭WPF对话框

C# 在viewmodel中使用X按钮关闭WPF对话框,c#,wpf,mvvm,C#,Wpf,Mvvm,我目前在WPF中打开了一个对话框,如果您点击cancel按钮,该对话框将在显示警告消息后关闭,但是如果用户点击上角的X按钮,它将关闭,而不显示消息。我可以在代码中重写OnClosing事件,当我点击X按钮时,该事件会触发,但如果可能的话,我更愿意通过ViewModel来实现 <telerik:RadButton Content="Cancel" Command="{Binding CloseCommand}" IsCancel="True" /> 那么,有人知道如何将事件附加到vi

我目前在WPF中打开了一个对话框,如果您点击cancel按钮,该对话框将在显示警告消息后关闭,但是如果用户点击上角的X按钮,它将关闭,而不显示消息。我可以在代码中重写OnClosing事件,当我点击X按钮时,该事件会触发,但如果可能的话,我更愿意通过ViewModel来实现

<telerik:RadButton Content="Cancel" Command="{Binding CloseCommand}" IsCancel="True" />

那么,有人知道如何将事件附加到viewmodel中的X按钮单击吗?

如果您实际查看正在使用的代码,您应该看到它只设置DialogResult属性,而不处理Window.Close方法,您需要使用该方法来关闭窗口。只要编写自己的附加属性来调用Window.Close方法,如果您确实需要从视图模型中关闭它。然而,在我看来,关闭窗口实际上与MVVM没有任何关系,因此视图模型不应该真正了解Windows。为此,我稍微重新编写了这个问题,因为你是正确的,dialogResult对它没有任何影响。抱歉,如果不清楚,WPFI仍然有点新,它可以覆盖代码中的OnClosing事件,当我点击X按钮时会触发该事件,但如果可能的话,我宁愿通过ViewModel来执行该操作。。。为什么?也许您不太了解MVVM?事实上,最好在这样的情况下使用代码隐藏,以操纵视图模型无论如何都不应该知道的UI元素。你只需要定义一个来处理结束事件并显示你的消息。这很公平-我只是不知道为什么点击Cancel和点击X应该在不同的地方包含不同的代码,仅此而已。我只是希望找到一个解决方案,当您不确定某个.NET控件时,可以将它们放在同一个位置。您应该转到MSDN,看看它们能告诉您什么:。