【问题标题】:Keep WPF application alive on Closing在关闭时保持 WPF 应用程序处于活动状态
【发布时间】:2014-11-14 04:51:10
【问题描述】:

已经有关于这个的问题了,但这有点不同,所以我在问。 这是我在 Window 中的 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
    }

}

在这种情况下,我怎样才能让我的应用程序保持活跃?谢谢。

【问题讨论】:

  • 你不能什么都不做吗?什么原因导致app关闭代码没有进入你的if语句?
  • 当我点击否时,应用程序关闭。我猜是因为它在 Closeing
  • stackoverflow.com/questions/3101801/… 讨论关闭而不是关闭

标签: c# wpf mvvm mvvm-light


【解决方案1】:
<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

【讨论】:

    【解决方案2】:

    来自Closingdocumentation

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多