WPF: Aufruf der Methode in View from viewModel

8

Ich verwende AvalonDock in einer WPF-Anwendung und muss das Layout des AvalonDock beibehalten, das der Benutzer eingerichtet hat (Verschieben, Andocken, Abnehmen der Panels).

Die Funktion dafür ist auf dem Steuerelement selbst (SaveLayout, RestoreLayout).

Was ist der richtige Weg?

Im Moment habe ich einen Befehl im mainWindowViewModel, der von der Anwendung beim Erstellen der Instanz der Fensteransicht und des Viewmodels erstellt wird. Es bewirkt im Wesentlichen, dass der Relay-Befehl eine anonyme Methode aufruft, die die benötigte Funktion in der Ansichtssteuerung aufruft. Dies funktioniert, da die Anwendung das Fenster und das Viewmodel dafür erstellt.

Aber wie würde ich das angehen, wenn ein View- und View-Model auf niedrigerer Ebene dies tun müsste? Wenn ich diese Methode benutze, müsste ich den Befehl immer noch auf Anwendungsebene erstellen und ihn über die viewModels dorthin schicken, wo er gebunden werden muss? Darin müsste ich das usercontrol suchen, das eine Ansicht ist, dann das avalonDock-Steuerelement darin und das auf Anwendungsebene verwenden, was fehleranfällig ist. Irgendwie scheint es dreckig ...

Danke!

    
Marino Šimić 18.06.2011, 03:22
quelle

2 Antworten

3

Sie können eine Schnittstelle IView einführen, damit das ViewModel eine Methode für die Ansicht aufrufen kann. Auf diese Weise muss das ViewModel nicht über die konkrete View-Klasse informiert werden und kann trotzdem noch Unit-getestet werden.

Wie dies erreicht werden kann, zeigen die Beispielanwendungen des WPF-Anwendungsframeworks (WAF) .

    
jbe 18.06.2011, 13:18
quelle
1

Sie können entkoppeltes Messaging verwenden, um zwischen Ansichtsmodellen zu kommunizieren

Ссылка

    
Navid Rahmani 18.06.2011 07:04
quelle