我已经弄清楚如何从我的 ViewModel 关闭窗口。
现在我需要从另一侧解决窗口关闭问题。
当用户单击窗口的关闭按钮时,我需要在 ViewModel 中触发 Save() 方法。
我正在考虑将 Command 属性绑定到 Window 的关闭事件,但我的 ViewModel 与用户控件相关,在这种情况下,关闭命令将不会被执行。
我也在看这个问题处置 WPF 用户控件 https://stackoverflow.com/questions/502761/disposing-wpf-user-controls,但恐怕将 Save 方法调用放在 Dispose 方法中有点太晚了。
有什么办法可以解决这个问题吗?
非常感谢!
如果您总是需要在关闭时保存,为什么不从 ViewModel 中的 Close() 方法而不是从 View 中调用 Save() 方法呢?然后只需确保窗口仅从 ViewModel 关闭,而不是从 View 本身关闭。类似的东西(未经测试,但你明白了)
public class SaveOnCloseViewModel
{
public event Action RequestClose;
...
public void Close()
{
Save();
RequestClose();
}
}
public class SaveOnCloseView
{
private SaveOnCloseViewModel _vm;
public SaveOnCloseView(SaveOnCloseViewModel vm)
{
_vm = vm;
_vm.RequestClose += this.PerformClose;
this.OnClosing += Window_Closing;
}
private bool _isClosing = false;
private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
if (!_isClosing)
{
e.Cancel = true;
_vm.Close();
}
}
private void PerformClose()
{
_isClosing = true;
this.Close();
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)