Die Bindung des "WindowState" - Eigenschaft für ein Fenster in WPF mit MVVM
Ich gebunden, das "WindowState-Eigenschaft" von meinem Hauptfenster zu meinem ViewModel, um den Zustand der Fenster von einem Befehl, aber das erste mal, dass ich das Fenster minimieren, wird Sie minimiert, wie ein Arbeitsblatt in einer Excel-Datei. Gibt es eine Arbeit um für diese, oder eine richtige Art und Weise zu binden, die "WindowState" - Eigenschaft auf " meine ViewModel, so dass das Fenster minimiert, richtig?
Was haben Sie bisher? Post code.
Ohne zu wissen, den hintergrund dessen, was Sie zu tun versuchen, es klingt wie Sie möglicherweise unter dem ViewModel, was ein Schritt zu weit. Dinge, die ausschließlich die UI-Logik sind ganz akzeptabel in der code-behind-und in der Tat haben kein Geschäft im ViewModel. Ich würde sagen, dies beinhaltet Dinge wie Fokus und Fenster-Status.
Enstein ich mit dem Schalter der code hinter wie du gesagt hast, jetzt funktioniert es perfekt. Was ich versuche zu tun, ist die Taskleiste ausblenden-Taste, wenn das Fenster minimiert ist, und einen Menüpunkt befestigt, um das Symbol in der Taskleiste, um das Fenster zurück.
Ich habe herausgefunden, was verursacht wurde, das Fenster zu minimieren, wie eine Excel-Tabelle. Wenn die Eigenschaft "ShowInTaskBar" auf false gesetzt ist, bevor das Fenster minimiert wird, bekommen Sie Ihre Reaktion. Wenn "ShowInTaskBar" eingestellt ist, dann sieht es aus wie es in den tray minimiert. Ich sollte erwähnt haben, ich war eine Veränderung, die Eigenschaft als auch in der Frage.
Ohne zu wissen, den hintergrund dessen, was Sie zu tun versuchen, es klingt wie Sie möglicherweise unter dem ViewModel, was ein Schritt zu weit. Dinge, die ausschließlich die UI-Logik sind ganz akzeptabel in der code-behind-und in der Tat haben kein Geschäft im ViewModel. Ich würde sagen, dies beinhaltet Dinge wie Fokus und Fenster-Status.
Enstein ich mit dem Schalter der code hinter wie du gesagt hast, jetzt funktioniert es perfekt. Was ich versuche zu tun, ist die Taskleiste ausblenden-Taste, wenn das Fenster minimiert ist, und einen Menüpunkt befestigt, um das Symbol in der Taskleiste, um das Fenster zurück.
Ich habe herausgefunden, was verursacht wurde, das Fenster zu minimieren, wie eine Excel-Tabelle. Wenn die Eigenschaft "ShowInTaskBar" auf false gesetzt ist, bevor das Fenster minimiert wird, bekommen Sie Ihre Reaktion. Wenn "ShowInTaskBar" eingestellt ist, dann sieht es aus wie es in den tray minimiert. Ich sollte erwähnt haben, ich war eine Veränderung, die Eigenschaft als auch in der Frage.
InformationsquelleAutor norlando | 2011-01-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich glaube nicht, dass Sie kümmern sollte, das Fenster Stand in ein view-Modell, es ist völlig falsch, weil eine niedrigere Ebene ist sich bewusst einer höheren Ebene (also falschen Separation of Concerns (SOC)).
Was ich normalerweise in diesem Fall zu tun ist, abonnieren Sie änderungen in der Ansicht Modell aus der code hinter das Steuerelement oder das Fenster (also die anzeigen), die mit der view-Modell. In diesem Fall ist es gültig zu schreiben, die code in der code-behind-denn es ist nur in der Ansicht verwendet wird (und somit die code-behind ist der perfekte Ort für diese Logik, die Sie wirklich nicht wollen, um unit-test).
WindowState
sollte diktieren Ihren Wert. Zum Beispiel, eines meiner Modelle anzeigen enthalten die BoolescheShowResults
. Ich wollte diese wechseln meineWindowState
zuMaximize
, so habe ich eine BoolToWindowStateConverter.InformationsquelleAutor Geert van Horrik
dies ist ein Beispiel-umgehen, getestet mit Weiterleitung-Befehl-Logik. Erhalten Sie mehr detail auf WPF-Anwendungen Mit Dem Model-View-ViewModel Design Pattern .
und in der Windows-ViewModel
InformationsquelleAutor Binil
Andere Möglichkeit ist das abonnieren über einen Befehl UND einen Ereignis-code-hinter, - e.g:
Den Befehl in diesem Fall wirkt sich auf die VM. Das Ereignis Klicken, ändert sich nur die Fenster-Status.
InformationsquelleAutor VitalyB