Heim > Backend-Entwicklung > C++ > Wie rufe ich übergeordnete Ansichtsmodellfunktionen von untergeordneten Ansichtsmodellen in WPF auf?

Wie rufe ich übergeordnete Ansichtsmodellfunktionen von untergeordneten Ansichtsmodellen in WPF auf?

Mary-Kate Olsen
Freigeben: 2024-12-26 05:51:21
Original
598 Leute haben es durchsucht

How to Call Parent View Model Functions from Child View Models in WPF?

So führen Sie Funktionen im übergeordneten Ansichtsmodell aus untergeordneten Ansichtsmodellen aus

Ihre Anwendung besteht aus einer TreeView, zwei ContentPresentern und einer separaten Ansicht Modelle für jedes UI-Element, einschließlich des Hauptfensters. Um die Anzeige zu aktualisieren, versuchen Sie, eine Methode im MainWindowViewModel aus dem TreeViewViewModel aufzurufen.

Wie in ähnlichen Fällen besteht eine praktikable Lösung in der Verwendung von Delegate-Objekten. Eine ausführliche Erklärung und praktische Umsetzung finden Sie in der vorherigen Forumsantwort mit dem Titel „Übergabe von Parametern zwischen Ansichtsmodellen“. Ersetzen Sie einfach die Delegaten in diesem Beispiel durch die gewünschten Methoden, und sie funktionieren ähnlich.


Aktualisieren

Um Methoden direkt aufzurufen Anstatt Parameter zu übergeben, sollten Sie den folgenden modifizierten Delegaten-Handler in Betracht ziehen:

public void ParameterViewModel_OnParameterChange(string parameter)
{
    // Call your method here
}
Nach dem Login kopieren

Dieser Delegat dient als Pfad zum übergeordneten Ansichtsmodell und ermöglicht ereignisähnliche Funktionen Funktionalität („ReadyForYouToCallMethodNow“). Alternativ können Sie den Delegaten ohne Eingabeparameter definieren:

public delegate void ReadyForUpdate();

public ReadyForUpdate OnReadyForUpdate { get; set; }
Nach dem Login kopieren

Im übergeordneten Ansichtsmodell können Sie nach dem Anhängen des Handlers wie im vorherigen Beispiel dargestellt die Methode aufrufen:

public void ChildViewModel_OnReadyForUpdate()
{
    // Call your method here
    UpdateDisplay();
}
Nach dem Login kopieren

Wenn mehrere untergeordnete Ansichtsmodelle beteiligt sind, können Sie den Delegaten in einer separaten Klasse definieren, auf die alle zugreifen können Modelle.


Update 2

Nach weiterer Analyse könnte ein einfacherer Ansatz ausreichen. Sie können untergeordnete Ansichtselemente direkt an Eigenschaften im übergeordneten Ansichtsmodell binden. Beispielsweise bindet der folgende Codeausschnitt in Ihrem TreeViewView die Button.Command-Eigenschaft an eine ICommand-Eigenschaft in MainWindowViewModel:

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

Dies setzt voraus, dass die Instanz des übergeordneten Ansichtsmodells als DataContext des MainWindow festgelegt ist.

Das obige ist der detaillierte Inhalt vonWie rufe ich übergeordnete Ansichtsmodellfunktionen von untergeordneten Ansichtsmodellen in WPF auf?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage