Maison > développement back-end > C++ > Comment puis-je appeler des fonctions de modèle de vue principale à partir de modèles de vue enfants dans WPF ?

Comment puis-je appeler des fonctions de modèle de vue principale à partir de modèles de vue enfants dans WPF ?

Mary-Kate Olsen
Libérer: 2024-12-31 20:53:11
original
893 Les gens l'ont consulté

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

Appel de fonctions dans le modèle de vue principal à partir d'autres modèles de vue

Dans un programme à multiples facettes composé de plusieurs modèles de vue, il peut souvent être nécessaire d'exécuter des fonctions spécifiques dans le modèle de vue principal à partir d’autres modèles de vue descendants. Considérons un scénario dans lequel le modèle de vue principal gère l'affichage du contenu au sein des présentateurs de contenu, et il est nécessaire de mettre à jour manuellement cet affichage à partir d'un modèle de vue enfant.

Mise en œuvre

Pour combler ce fossé de communication , envisagez d'incorporer des objets délégués. Ces délégués établissent essentiellement un chemin de retour vers le modèle de vue parent, fournissant un moyen de « déclencher un événement » indiquant qu'une méthode doit être appelée.

Invocation de méthode simple

Pour invoquer un dans le modèle de vue parent, utilisez la syntaxe déléguée suivante :

public delegate void ReadyForUpdate();
Copier après la connexion

Dans le modèle de vue enfant :

// Define a handler for the ReadyForUpdate delegate
public void ParameterViewModel_OnParameterChange(string parameter)
{
    // Here, we call the desired method
    UpdateDisplay();
}
Copier après la connexion

Dans le modèle de vue parent :

// Attach the handler to the delegate
public ReadyForUpdate OnReadyForUpdate { get; set; }

// When the delegate's event is raised (e.g., by the child calling UpdateDisplay()),
// this method will be executed
public void ChildViewModel_OnReadyForUpdate()
{
    // Desired action occurs here (e.g., updating the display)
}
Copier après la connexion

Liaison directe

Une approche alternative, si elle est appropriée, consisterait à lier directement les vues enfants au modèle de vue parent, comme illustré ci-dessous :

<!-- In TreeViewView -->
<Button Content="Click Me" Command="{Binding DataContext.ParentCommand, RelativeSource={RelativeSource AncestorType={x:Type MainWindow}}}" />
Copier après la connexion

Cela présuppose qu'une instance du modèle de vue parent soit définie comme DataContext de MainWindow.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal