Heim >Backend-Entwicklung >C++ >Wie können untergeordnete Ansichtsmodelle Funktionen in einem übergeordneten Ansichtsmodell aufrufen?
Aufrufen von Funktionen im Hauptansichtsmodell von untergeordneten Ansichtsmodellen
In Szenarien mit mehreren Ansichtsmodellen mit einer hierarchischen Beziehung kann dies erforderlich sein Rufen Sie Funktionen im Hauptansichtsmodell aus untergeordneten Ansichtsmodellen auf. Dieser Artikel befasst sich genau mit dieser Anforderung und bietet eine Lösung, die Delegate-Objekte nutzt.
Betrachten Sie das beschriebene Szenario. Ein Hauptfensteransichtsmodell regelt den Inhalt, der in untergeordneten Ansichten angezeigt wird. Die Aufgabe besteht darin, die Anzeige manuell zu aktualisieren, indem eine Funktion im Hauptfenster-Ansichtsmodell von einem untergeordneten Ansichtsmodell aus aufgerufen wird.
Verwendung von Delegate-Objekten
Der verwendete Ansatz der Delegate-Methode in der Lösung und im Referenzartikel ermöglicht die Kommunikation in jedem Eltern-Kind-Szenario. Der Zugriff ist von untergeordneten Ansichtsmodellen zu übergeordneten Ansichtsmodellen, von Fenster-Code-Behinds zu untergeordneten Fenster-Code-Behinds und sogar zwischen Datenbeziehungen möglich.
Implementierung
Delegierten im übergeordneten Ansichtsmodell definieren:
public delegate void ReadyForUpdate(); public ReadyForUpdate OnReadyForUpdate { get; set; }
Innerhalb der untergeordneten Ansicht Modell, fügen Sie dem Delegaten einen Handler hinzu:
public void ReadyForUpdateHandler() { // Call the desired method in the parent view model }
Rufen Sie im übergeordneten Ansichtsmodell gegebenenfalls die Methode auf:
public void ChildViewModel_OnReadyForUpdate() { // Call your method here UpdateDisplay(); }
Alternativer Ansatz
In manchen Fällen kann ein einfacherer Ansatz ausreichen. Die direkte Bindung von untergeordneten Ansichten an das übergeordnete Ansichtsmodell ermöglicht den direkten Zugriff auf ICommand-Eigenschaften im übergeordneten Ansichtsmodell:
<!-- In a child view --> <Button Content="Click Me" Command="{Binding DataContext.ParentCommand, RelativeSource={RelativeSource AncestorType={x:Type MainWindow}}}" />
Diese Methode geht davon aus, dass die Instanz des übergeordneten Ansichtsmodells als DataContext des Hauptfensters festgelegt ist.
Das obige ist der detaillierte Inhalt vonWie können untergeordnete Ansichtsmodelle Funktionen in einem übergeordneten Ansichtsmodell aufrufen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!