如何处理关闭窗口时,按下关闭图标在WPF/MVVM右上方

本文关键字:图标 WPF 右上方 MVVM 何处理 处理 窗口 | 更新日期: 2023-09-27 18:11:02

我能够将按钮和菜单项与ICommand绑定并关闭窗口。它完全符合教程中描述的WPF应用程序与模型-视图-视图模型设计模式-通过Command属性在XAML中访问。

但是在教程中没有描述或实现如何通过按下窗口右上角的标准' close '图标来关闭。我需要在我的应用程序中执行一些清理。我的问题是如何将Command绑定到关闭事件,以便在用户按下关闭图标(不是按钮或菜单项-我知道如何管理这种情况)时执行。

该如何处理以避免违反MVVM方法?谢谢!

如何处理关闭窗口时,按下关闭图标在WPF/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的交互触发器来完成相同的事情。