gpt4 book ai didi

c# - 使用 WPF/MVVM Light Toolkit 处理窗口关闭事件

转载 作者:IT王子 更新时间:2023-10-29 03:32:42 31 4
gpt4 key购买 nike

我想处理我窗口的 Closing 事件(当用户单击右上角的“X”按钮时),以便最终显示确认消息或/和取消关闭。

我知道如何在代码隐藏中执行此操作:订阅窗口的 Closing 事件,然后使用 CancelEventArgs.Cancel 属性。

但我正在使用 MVVM,所以我不确定这是好的方法。

我认为好的方法是将 Closing 事件绑定(bind)到我的 ViewModel 中的 Command

我试过了:

<i:Interaction.Triggers>
<i:EventTrigger EventName="Closing">
<cmd:EventToCommand Command="{Binding CloseCommand}" />
</i:EventTrigger>
</i:Interaction.Triggers>

在我的 ViewModel 中有关联的 RelayCommand 但它不起作用(命令的代码未执行)。

最佳答案

我会简单地将处理程序关联到 View 构造函数中:

MyWindow() 
{
// Set up ViewModel, assign to DataContext etc.
Closing += viewModel.OnWindowClosing;
}

然后将处理程序添加到 ViewModel:

using System.ComponentModel;

public void OnWindowClosing(object sender, CancelEventArgs e)
{
// Handle closing logic, set e.Cancel as needed
}

在这种情况下,通过使用具有更多间接性的更精细的模式(额外的 5 行 XAML 加上 Command 模式),除了复杂性之外,您什么也得不到。

“零代码隐藏”本身并不是目标,重点是将 ViewModel 与 View 分离。即使事件绑定(bind)在 View 的代码隐藏中,ViewModel 也不依赖于 View ,并且关闭逻辑可以进行单元测试

关于c# - 使用 WPF/MVVM Light Toolkit 处理窗口关闭事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3683450/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com