Se l'utente chiude l'applicazione, è necessario visualizzare un messaggio di salvataggio (per essere sicuri di voler eliminare le modifiche dei file modificati).ShowDialog in Closing-Event
per implementare questo, ho un menuitem con un comando poroso (senza chiave-gesto):
private void Command_Exit(object sender, ExecutedRoutedEventArgs e)
{
Application.Current.Shutdown();
}
MainWindow ha una chiusura evento. in questo caso controllo se ci sono file non salvati. se sì, la SaveDialog deve essere aperto (da scegliere, quali file devono essere salvati):
private void Window_Closing(object sender, CancelEventArgs e)
{
if (sdl.Count() > 0)
{
SaveDialog sd = new SaveDialog();
IEnumerable<Doc> close = sd.ShowDialog(this);
if (close == null)
e.Cancel = true;
else
foreach (Doc document in close)
document.Save();
}
}
in questo ShowDialog-Method (implementato nel mio SaveDialog-Class) che io chiamo
bool? ret = ShowDialog();
if (!ret.HasValue)
return null;
if (!ret.Value)
return null;
Il problema è:
Se uso Alt + F4-Shortcut per chiudere l'applicazione (comportamento predefinito della finestra principale) funziona e ottengo il file salvato se ci sono file non salvati. ma se chiudo l'applicazione eseguendo il Command_Exit-metodo, il metodo-Call
bool? ret = ShowDialog();
restituisce NULL e non viene visualizzata la finestra di dialogo.
Se assegno Alt + F4 KeyGesture a CommandBinding, il problema è cambiato: Esecuzione Command_Exit funziona bene ma Alt + F4 Collegamento no.
Qual è il motivo per cui ShowDialog() - Method non funziona in entrambi i casi e come risolverlo?
In che modo una finestra può essere chiusa? Non solo in modo interattivo. – Jodrell