2014-09-19 78 views
0

有问题,但这有点不同,所以我问。 这是我的XAML窗口内:保持WPF应用程序活着关闭

<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 
    } 

} 

我怎样才能让我的应用程序正常工作在这种情况下?谢谢。

+0

你就不能什么都不做?什么导致应用程序关闭代码不会输入您的if语句? – 2014-09-19 14:45:09

+0

当我点击否,应用程序关闭。我想这是因为它在关闭 – jason 2014-09-19 14:46:37

+0

http://stackoverflow.com/questions/3101801/mef-wpf-cancel-application-current-shutdown-by-plugins讨论关闭而不是关闭 – 2014-09-19 14:47:22

回答

2

documentationClosing

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

您需要一个事件处理程序挂接到这个事件,并设置Canceltrue

如果你想这样做,在mvvmy方式,this answer可以帮助你钩住你的EventArgs的命令参数

0
<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