2014-09-19 2 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); } 
} 

Это Execute:

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? –

+0

Когда я нажимаю no, приложение отключается. Я думаю, это потому, что он находится в закрытии – jason

+0

http://stackoverflow.com/questions/3101801/mef-wpf-cancel-application-current-shutdown-by-plugins обсуждает проблему Close, а не shutdown –

ответ

2

Из documentation из Closing

закрытия могут быть обработаны, чтобы определить, когда окно закрывается (например, когда Закрыть называется). Кроме того, закрытие может использоваться для предотвращения закрытия окна. Чтобы предотвратить закрытие окна, вы можете установить для свойства Cancel для аргумента CancelEventArgs значение true.

Вам нужно подключить обработчик события к этому событию и установить Cancel в true.

Если вы хотите сделать это в 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