我试图在我的视图上捕获close事件以调用save方法.我不希望用户能够关闭窗口并处理未保存的更改.我试过用
Application.Current.MainWindow.Close()
Run Code Online (Sandbox Code Playgroud)
但问题的观点不是我的观点MainWindow.有没有办法将关闭窗口绑定到Xaml的命令沿着以下行:
public RelayCommand CloseWindow;
Constructor()
{
CloseWindow = new RelayCommand(CloseWin);
}
public void CloseWin(object obj)
{
Window win = obj as Window;
win.Close();
}
Run Code Online (Sandbox Code Playgroud)
和Xaml:
<Button Command="{Binding CloseWindowCommand}" CommandParameter="{Binding ElementName=WindowNameTobeClose}" Content="Cancel" />
Run Code Online (Sandbox Code Playgroud)
但是捕获窗口关闭事件而不是绑定到UI中的已定义按钮?
Har*_*raf 12
这是我的解决方案.Xaml中的命名空间:
xmlns:z="http://schemas.microsoft.com/expression/2010/interactivity"
Run Code Online (Sandbox Code Playgroud)
Xaml绑定:
<z:Interaction.Triggers>
<z:EventTrigger EventName="Closing">
<i:InvokeCommandAction Command="{Binding CloseWindowCommand}" />
</z:EventTrigger>
</z:Interaction.Triggers>
Run Code Online (Sandbox Code Playgroud)
我已经在项目中有一个命令助手类.这是我的viewModel中的公开属性:
private ICommand _CloseArticleCommand;
public ICommand CloseArticleCommand
{
get { return _CloseArticleCommand; }
set
{
_CloseArticleCommand = value;
OnPropertyChanged("CloseArticleCommand");
}
}
Run Code Online (Sandbox Code Playgroud)
该属性在viewModel构造函数方法中初始化:
private void InitialiseBtnCommands()
{
CloseWindowCommand = new BtnCommand(CloseWindowCommandAction);
}
Run Code Online (Sandbox Code Playgroud)
最后执行保存的动作方法:
private void CloseWindowCommandAction()
{
//Save your data etc.
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13556 次 |
| 最近记录: |