Heim >Backend-Entwicklung >C++ >Wie können untergeordnete Ansichtsmodelle Funktionen in einem übergeordneten Ansichtsmodell aufrufen?

Wie können untergeordnete Ansichtsmodelle Funktionen in einem übergeordneten Ansichtsmodell aufrufen?

Patricia Arquette
Patricia ArquetteOriginal
2024-12-26 18:36:12313Durchsuche

How Can Child View Models Call Functions in a Parent ViewModel?

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

  1. Delegierten im übergeordneten Ansichtsmodell definieren:

    public delegate void ReadyForUpdate();
    public ReadyForUpdate OnReadyForUpdate { get; set; }
  2. 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
    }
  3. 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn