wpf closing事件mvvm绑定阻止关闭CancelEventArgs 始终为null
在WPF中,要绑定Closing事件并阻止关闭窗口,可以使用以下方式:
- 在View的xaml中绑定Closing事件:
<Window
...
Closing="Window_Closing">
- 在ViewModel中定义一个Command,并在Command中阻止关闭窗口:
public ICommand WindowClosingCommand { get; private set; }
public MyViewModel()
{
WindowClosingCommand = new RelayCommand<CancelEventArgs>(WindowClosing);
}
private void WindowClosing(CancelEventArgs e)
{
// 阻止关闭窗口
e.Cancel = true;
}
- 在View中将Closing事件绑定到ViewModel的Command上:
private void Window_Closing(object sender, CancelEventArgs e)
{
var viewModel = DataContext as MyViewModel;
viewModel.WindowClosingCommand.Execute(e);
}
需要注意的是,Closing事件的CancelEventArgs参数始终是null,因此需要使用RelayCommand的泛型版本,将CancelEventArgs作为参数传递进去。
原文地址: https://www.cveoy.top/t/topic/E0w 著作权归作者所有。请勿转载和采集!