Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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# 绑定到MVVM WPF中的窗口关闭事件?_C#_Wpf_Xaml_Mvvm - Fatal编程技术网

C# 绑定到MVVM WPF中的窗口关闭事件?

C# 绑定到MVVM WPF中的窗口关闭事件?,c#,wpf,xaml,mvvm,C#,Wpf,Xaml,Mvvm,我试图捕获视图上的关闭事件以调用save方法。我不希望用户能够关闭窗口并处理未保存的更改。我试着用 Application.Current.MainWindow.Close() 但所讨论的视图不是我的主窗口。是否有任何方法可以将关闭窗口绑定到Xaml中的命令,具体如下: public RelayCommand CloseWindow; Constructor() { CloseWindow = new RelayCommand(CloseWin); } public void Clo

我试图捕获视图上的关闭事件以调用save方法。我不希望用户能够关闭窗口并处理未保存的更改。我试着用

Application.Current.MainWindow.Close()
但所讨论的视图不是我的主窗口。是否有任何方法可以将关闭窗口绑定到Xaml中的命令,具体如下:

public RelayCommand CloseWindow;
Constructor()
{
    CloseWindow = new RelayCommand(CloseWin);
}

public void CloseWin(object obj)
{
    Window win = obj as Window;
    win.Close();
}
&Xaml:

<Button Command="{Binding CloseWindowCommand}" CommandParameter="{Binding ElementName=WindowNameTobeClose}" Content="Cancel" />

但是捕获窗口关闭事件而不是绑定到UI中定义的按钮?

这是我的解决方案。Xaml中的命名空间:

xmlns:z="http://schemas.microsoft.com/expression/2010/interactivity"
Xaml绑定:

 <z:Interaction.Triggers>
        <z:EventTrigger EventName="Closing">
            <i:InvokeCommandAction Command="{Binding CloseWindowCommand}" />
        </z:EventTrigger>
    </z:Interaction.Triggers>
属性在viewModel构造函数方法中初始化:

  private void InitialiseBtnCommands()
    {
        CloseWindowCommand = new BtnCommand(CloseWindowCommandAction);         
    }
最后是执行保存的操作方法:

 private void CloseWindowCommandAction()
        {
            //Save your data etc.                
        }

@Sajeetharan,这个问题与你的链接问题完全相同。如果你投票决定关闭这个网站,因为它在将来是一个复制品,这将有助于清理这个网站。非常感谢。
 private void CloseWindowCommandAction()
        {
            //Save your data etc.                
        }