In der Version von AvalonDock, die ich verwende (1.2.2668.0), kann ich einfach einen Handler für das Closing-Ereignis eines DocumentContent definieren.
Beispiel zum Hinzufügen eines Handlers zu einem DocumentContent, ich füge einen Handler zum Closing-Ereignis hinzu:
DocumentContent dc = new DocumentContent();
dc.Closing += new EventHandler(dc_Closing);
Der Beispieler-Handler:
void dc_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
MessageBoxResult Res = MessageBox.Show("Möchten Sie speichern?", "Dokument speichern?", MessageBoxButton.YesNoCancel, MessageBoxImage.Question);
switch (Res)
{
case MessageBoxResult.Cancel:
//Benutzer hat abgebrochen, er möchte das Fenster wahrscheinlich nicht schließen
e.Cancel = true;
break;
case MessageBoxResult.No:
//Nichts zu tun - Schließen fortsetzen
e.Cancel = false;
break;
case MessageBoxResult.Yes:
//Er möchte speichern - Speichern hier starten!
Save_Function_For_DocumentContent(sender);
e.Cancel = false;
break;
default:
//Etwas Unerwartetes, besser abbrechen
e.Cancel = true;
break;
}
Hoffe, das hilft. Falls nicht, welche Version von AvalonDock verwenden Sie?}
0 Stimmen
Exponiert das Dock-Komponente das onTabClosing-Ereignis, bei dem Sie e.Cancel auf true setzen könnten, wenn der Benutzer storniert, anstatt zu speichern... zum Beispiel?
0 Stimmen
@Davide Piras Meine Klasse erweitert einen Avalon-Dokumentinhalt und füge ihn meinem DockingManager hinzu. Jedes Dokument hat einen Schließen-Button, den ich schließen kann, aber ich möchte den Benutzer auffordern, zu speichern, bevor er/sie schließt. Ich weiß nicht, wie ich das Schließungsereignis abfangen oder wann und wo ich es aufrufen soll. `public partial class EditorCtrl: DocumentContent`