Heim >Backend-Entwicklung >C++ >Wie kann ich Hauptansichtsmodellfunktionen von anderen Ansichtsmodellen in WPF aufrufen?

Wie kann ich Hauptansichtsmodellfunktionen von anderen Ansichtsmodellen in WPF aufrufen?

DDD
DDDOriginal
2025-01-05 12:08:39129Durchsuche

How Can I Call Main View Model Functions from Other View Models in WPF?

Funktionen im Hauptansichtsmodell aus anderen Ansichtsmodellen aufrufen

In diesem Szenario haben Sie ein Programm mit einer TreeView und ContentPresentern, jeweils mit ihre eigenen Ansichtsmodelle. Das mainWindowViewModel steuert die Anzeige in den contentPresenters und Sie möchten es manuell aktualisieren.

Zugriff auf MainWindowViewModel über TreeViewViewModel

Das bereitgestellte Codefragment versucht, das MainWindowViewModel mithilfe von DataContext abzurufen , was falsch ist, da MainWindowVM nicht das TreeViewViewModel ist DataContext.

Delegate-Objekte für die Eltern-Kind-Kommunikation

Ein gängiger Ansatz ist die Verwendung von Delegate-Objekten, die eine Kommunikation in beide Richtungen zwischen übergeordneten und untergeordneten Ansichtsmodellen ermöglichen. Delegatenobjekte können für jede Eltern-Kind-Beziehung verwendet werden, nicht nur zum Übergeben von Parametern zwischen Ansichtsmodellen.

Methoden in MainWindowViewModel aufrufen

Um eine Methode in MainWindowViewModel aufzurufen TreeViewViewModel, ersetzen Sie den Delegaten in der verknüpften Antwort durch Ihre Methode. Zum Beispiel:

public void ParameterViewModel_OnParameterChange(string parameter)
{
    // Call MainWindowViewModel method here
    MainWindowVM.UpdateDisplay();
}

Alternativ können Sie einen Delegaten definieren, der keine Parameter akzeptiert:

public delegate void ReadyForUpdate();

public ReadyForUpdate OnReadyForUpdate { get; set; }

Im übergeordneten Ansichtsmodell können Sie die Methode dann im untergeordneten Modell aufrufen Ansichtsmodell, wenn der Delegat aufgerufen wird:

public void ChildViewModel_OnReadyForUpdate()
{
    UpdateDisplay();
}

Direkte Bindung an die übergeordnete Ansicht Modell

Ein weiterer einfacherer Ansatz ist die direkte Bindung von untergeordneten Ansichten an übergeordnete Ansichtsmodelle. Dadurch können Sie beispielsweise eine Button.Command-Eigenschaft in einer untergeordneten Ansicht an eine ICommand-Eigenschaft im übergeordneten Ansichtsmodell binden:

<Button Content="Click Me" Command="{Binding DataContext.ParentCommand, RelativeSource={RelativeSource AncestorType={x:Type MainWindow}}}" />

Dies setzt voraus, dass MainWindowViewModel als DataContext des MainWindow festgelegt ist.

Das obige ist der detaillierte Inhalt vonWie kann ich Hauptansichtsmodellfunktionen von anderen Ansichtsmodellen in WPF 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