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 une application WPF ?

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

Barbara Streisand
Libérer: 2024-12-29 18:26:10
original
859 Les gens l'ont consulté

How Can I Invoke Main View Model Functions from Child View Models in a WPF Application?

Invocation des fonctions du modèle de vue principale à partir d'autres modèles de vue

Problème :

Dans une application avec une arborescence et plusieurs présentateurs de contenu, vous cherchez à invoquer une fonction dans le modèle de vue de la fenêtre principale (MainWindowViewModel) à partir de l'arborescence modèle de vue (TreeViewViewModel). Ceci est nécessaire pour mettre à jour manuellement l'affichage, car MainWindowViewModel contrôle ces modifications.

Solution :

L'utilisation d'objets délégués est une solution viable pour cette communication parent-enfant. Les méthodes déléguées peuvent être utilisées dans divers contextes, notamment les modèles de vue enfant-parent, les relations code-behind et les interactions de données pures. Pour plus d'informations sur les délégués, reportez-vous à la documentation des délégués de Microsoft (Guide de programmation C#).

Implémentation des délégués :

Dans le TreeViewViewModel, vous pouvez implémenter un délégué pour fournir un chemin de retour au modèle de vue parent. Définissez une méthode déléguée à appeler lorsque le modèle de vue enfant est prêt :

public delegate void ReadyForUpdate();
public ReadyForUpdate OnReadyForUpdate { get; set; }
Copier après la connexion

Le modèle de vue principal (MainWindowViewModel) s'abonnerait alors à la méthode UpdateDisplay lors de l'attachement du gestionnaire :

public void TreeViewViewModel_OnreadyForUpdate()
{
    UpdateDisplay();
}
Copier après la connexion

Approche de liaison de données :

Vous pouvez également envisager une approche plus simple impliquant une liaison directe de données provenant de l'enfant. vues au modèle de vue parent. Par exemple, liez une propriété de commande de bouton :

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

Cela suppose que le DataContext de MainWindow est défini sur une instance du modèle de vue parent.

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!

source:php.cn
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