Maison > développement back-end > C++ > Comment lier les événements de l'interface utilisateur WPF (comme SelectionChanged) aux commandes ViewModel dans MVVM ?

Comment lier les événements de l'interface utilisateur WPF (comme SelectionChanged) aux commandes ViewModel dans MVVM ?

Barbara Streisand
Libérer: 2025-01-12 22:36:44
original
630 Les gens l'ont consulté

How to Bind WPF UI Events (like SelectionChanged) to ViewModel Commands in MVVM?

Lier les événements de l'interface utilisateur WPF (par exemple SelectionChanged) aux commandes ViewModel dans MVVM

Le modèle MVVM préconise de séparer la logique de l'interface utilisateur de la couche de données. Pour cette raison, il est crucial de gérer les événements de l'interface utilisateur dans le ViewModel. Dans l'exemple de code fourni, l'événement SelectionChanged est géré en code-behind. Voyons comment déplacer cet événement vers le ViewModel.

Lier les événements de l'interface utilisateur aux commandes

WPF fournit une fonctionnalité puissante appelée liaison de données. Il vous permet de lier des éléments de l'interface utilisateur à des propriétés ou des commandes dans le ViewModel. Dans cet exemple, nous lions l'événement SelectionChanged de contactsList à une commande dans ViewModel.

Utilisez EventTriggers et InvokeCommandAction

Pour ce faire, vous pouvez utiliser EventTrigger et InvokeCommandAction à partir de l'espace de noms Windows.Interactivity. Un exemple est le suivant :

<code class="language-xml"><ListBox ...>
  <i:Interaction.Triggers>
    <i:EventTrigger EventName="SelectionChanged">
      <i:InvokeCommandAction Command="{Binding SelectedItemChangedCommand}" />
    </i:EventTrigger>
  </i:Interaction.Triggers>
</ListBox></code>
Copier après la connexion

Références espace de noms 'i'

Pour utiliser EventTrigger et InvokeCommandAction, vous devez référencer l'assembly System.Windows.Interactivity. Ouvrez le panneau Références du projet et accédez à Ajouter une référence > Assembly >

Lier la commande à ViewModel

Dans le ViewModel, créez une commande publique pour gérer l'événement :

Liez la commande au DataContext de la fenêtre :
<code class="language-csharp">public ICommand SelectedItemChangedCommand { get; }</code>
Copier après la connexion

<code class="language-csharp">this.DataContext = new MyAppViewModel();</code>
Copier après la connexion
Gestion de l'événement SelectedItemChanged

Dans MyAppViewModel, implémentez SelectedItemChangedCommand et effectuez la logique nécessaire, telle que l'obtention et le regroupement de balises, tout comme dans le gestionnaire d'événements d'origine.

En suivant ces étapes, vous avez réussi à déplacer la gestion des événements SelectionChanged vers le ViewModel, suivant ainsi les principes MVVM et séparant la logique de l'interface utilisateur de la couche de données.

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