如何处理关闭窗口时,按下关闭图标在WPF/MVVM右上方
本文关键字:图标 WPF 右上方 MVVM 何处理 处理 窗口 | 更新日期: 2023-09-27 18:11:02
我能够将按钮和菜单项与ICommand
绑定并关闭窗口。它完全符合教程中描述的WPF应用程序与模型-视图-视图模型设计模式-通过Command
属性在XAML中访问。
但是在教程中没有描述或实现如何通过按下窗口右上角的标准' close '图标来关闭。我需要在我的应用程序中执行一些清理。我的问题是如何将Command
绑定到关闭事件,以便在用户按下关闭图标(不是按钮或菜单项-我知道如何管理这种情况)时执行。
该如何处理以避免违反MVVM方法?谢谢!
MVVM Light Toolkit包含一个名为EventToCommand的行为,它为您提供了一种将命令绑定到事件的简单方法。
下面的XAML代码片段显示了如何在引发窗口的Closed事件时执行名为"closeccommand"的命令的示例:
<Window x:Class="EventToCommand.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:cmd="clr-namespace:GalaSoft.MvvmLight.Command;assembly=GalaSoft.MvvmLight.Extras.WPF4"
Title="MainWindow" Height="300" Width="500">
<!-- Make sure to put this tag directly inside the Window,
and not inside a child element, since it is the Windows that has the Closed event -->
<i:Interaction.Triggers>
<i:EventTrigger EventName="Closed">
<cmd:EventToCommand Command="{Binding CloseCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
<!-- Windows contents -->
</Window>
要访问EventToCommand行为,您需要从项目下载页面下载MVVM Light Toolkit,然后引用以下dll:
- GalaSoft.MvvmLight.dll
- GalaSoft.MvvmLight.Extras.dll
- System.Windows.Interactivity.dll
这就是所需要的。
关于如何开始使用该工具包的进一步说明可以在这里找到。
我会将命令绑定到应用程序的退出事件
我喜欢使用这里发现的AttachedCommand
行为来将命令绑定到事件,尽管我知道您也可以使用Blend的交互触发器来完成相同的事情。