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

Comment puis-je appeler les fonctions du modèle de vue principale à partir d'autres modèles de vue dans WPF ?

DDD
Libérer: 2025-01-05 12:08:39
original
134 Les gens l'ont consulté

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

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

Dans ce scénario, vous disposez d'un programme avec un TreeView et des contentPresenters, chacun avec leurs propres modèles de vue. Le mainWindowViewModel contrôle l'affichage dans les contentPresenters et vous souhaitez le mettre à jour manuellement.

Accès à MainWindowViewModel à partir de TreeViewModel

L'extrait de code fourni tente d'obtenir le MainWindowViewModel à l'aide de DataContext , ce qui est incorrect car MainWindowVM n'est pas le TreeViewViewModel DataContext.

Objets délégués pour la communication parent-enfant

Une approche courante consiste à utiliser des objets délégués, qui permettent la communication dans les deux sens entre les modèles de vue parent et enfant. Les objets délégués peuvent être utilisés pour toute relation parent-enfant, pas seulement pour transmettre des paramètres entre des modèles de vue.

Appel de méthodes dans MainWindowViewModel

Pour appeler une méthode dans MainWindowViewModel à partir de TreeViewViewModel, remplacez le délégué dans la réponse liée par votre méthode. Par exemple :

public void ParameterViewModel_OnParameterChange(string parameter)
{
    // Call MainWindowViewModel method here
    MainWindowVM.UpdateDisplay();
}
Copier après la connexion

Alternativement, vous pouvez définir un délégué qui ne prend aucun paramètre :

public delegate void ReadyForUpdate();

public ReadyForUpdate OnReadyForUpdate { get; set; }
Copier après la connexion

Dans le modèle de vue parent, vous pouvez ensuite appeler la méthode dans l'enfant afficher le modèle lorsque le délégué est invoqué :

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

Liaison directe à la vue parent Modèle

Une autre approche plus simple consiste à lier directement les vues enfants aux modèles de vues parents. Cela vous permet de lier, par exemple, une propriété Button.Command dans une vue enfant à une propriété ICommand dans le modèle de vue parent :

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

Cela suppose que MainWindowViewModel est défini 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!

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal