我正在尝试捕获视图上的close事件以调用save方法。我不希望用户能够关闭窗口并处理未保存的更改。我试过用
Application.Current.MainWindow.Close()
但有问题的观点不是我的MainWindow
。有没有办法将关闭窗口绑定到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中的已定义按钮?
答案 0 :(得分:10)
这是我的解决方案。 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 ICommand _CloseArticleCommand;
public ICommand CloseArticleCommand
{
get { return _CloseArticleCommand; }
set
{
_CloseArticleCommand = value;
OnPropertyChanged("CloseArticleCommand");
}
}
该属性在viewModel构造函数方法中初始化:
private void InitialiseBtnCommands()
{
CloseWindowCommand = new BtnCommand(CloseWindowCommandAction);
}
最后执行保存的动作方法:
private void CloseWindowCommandAction()
{
//Save your data etc.
}