关闭时保持WPF应用程序处于活动状态

本文关键字:应用程序 活动状态 WPF | 更新日期: 2023-09-27 18:23:40

已经有关于这方面的问题了,但这有点不同,所以我要问。这是我的xaml内部窗口:

<i:Interaction.Triggers>
    <i:EventTrigger EventName="Closing">
        <i:InvokeCommandAction Command="{Binding ClosingCommand}" />
    </i:EventTrigger>
</i:Interaction.Triggers>

这是关闭命令:

public virtual ICommand ClosingCommand
{
    get { return new RelayCommand(ClosingExecute); }
}

这是执行:

public virtual void ClosingExecute()
{
   MessageBoxResult result = MessageBox.Show("Close the application?", "Shut Down", MessageBoxButton.YesNo);
    if(result == MessageBoxResult.Yes)
    {
        Application.Current.Shutdown();
    }
    else
    {
       //I don't know what to write
    }
}

在这种情况下,我如何保持应用程序的有效性?谢谢

关闭时保持WPF应用程序处于活动状态

来自Closing 的文档

可以处理关闭以检测窗口何时关闭(例如,调用Close时)。此外,关闭可用于防止窗口关闭。若要防止窗口关闭,可以将CancelEventArgs参数的Cancel属性设置为true。

您需要将一个事件处理程序连接到此事件,并将Cancel设置为true

如果您想以mvvmy的方式执行此操作,这个答案可能会帮助您将eventargs连接到命令参数

<Application
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    StartupUri="MainWindow.xaml"
    ShutdownMode="OnExplicitShutdown">
</Application>
ShutdownMode="OnExplicitShutdown"

来源:https://stackoverflow.com/a/9992888/3855622