Ich bin neu in Caliburn Micro und lerne es aus diesem Helloworld-Beispiel . Im Beispiel gibt es nur 2 Ansichten (.xaml) vom Typ Application und UserControl und 1 View Model.
Ich vermeide es, Code dahinter zu verwenden. Daher habe ich nur Modell ansehen und ansehen. Ich möchte wissen, wie das Fenster schließen Ereignis meiner Helloworld-Anwendung zu fangen , damit ich es im View-Modell behandeln kann. Mein Ziel: Wenn der Benutzer die App schließen will, indem er die [x] -Taste in der oberen rechten Ecke drückt, gibt die App dem Benutzer eine Rückmeldung.
Ich habe über IViewAware und IScreen gelesen, aber ich finde kein spezifisches Beispiel für meine Frage.
Ein einfacher Beispielcode für das Ansichts- und Ansichtsmodell wird sehr geschätzt. Vielen Dank im Voraus.
PS. Ich benutze VS2013, C #.
Was Sie tun können, ist in Ihrem View
, dass Sie Caliburn Micro
mit
So wird es aussehen
%Vor% Und auf Ihrem ViewModel
können Sie einfach eine öffentliche Methode definieren, die OnClose
mit CancelEventArgs
als Parameter angibt und Sie können von dort aus damit umgehen.
Sie suchen nach einer Möglichkeit, ein Ereignis an einen Befehl zu binden. Der typische Ansatz besteht darin, das Verhalten EventToCommand von MVVMLight zu verwenden.
Beispielverwendung (aus dem verknüpften Artikel):
%Vor%Für Ihr spezifisches Szenario verwenden Sie MVVMLight nicht. Da dieses Framework open-source ist, könnten Sie die Implementierung von EventToCommand in Ihr eigenes Projekt kopieren, oder - einfacher - Sie können das InvokeCommandAction , das Teil der Bibliothek System.Windows.Interactivity.dll ist, die in Expression Blend enthalten ist.
Beispiel für InvokeCommandAction:
%Vor%Schließlich wurde das gesamte MVVM-Dogma, dass Sie "keinen Code hinter sich haben können" abgeschossen Zeit | und | Zeit erneut (der letzte Link ist besonders relevant). MVVM soll Unit-testable sein und trennt die "View-Logik" von der "Business-Logik". Das "Schließen" -Ereignis ist zugegebenermaßen ein bisschen eine Grauzone zwischen Ansichts- und Geschäftslogik. Aber wenn Sie in Ihrem Code einen Event-Handler hinterlegen können, der die entsprechende Methode oder den Befehl Ihres ViewModels aufruft, und Sie diesen Code Unit-Test testen können, dann sind Sie so gut wie Gold. Mach dir keine Sorgen darüber, alle Spuren von Code-Behind aus deinem Projekt zu entfernen.
Tags und Links wpf c# caliburn.micro