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>
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 à ViewModelDans 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>
<code class="language-csharp">this.DataContext = new MyAppViewModel();</code>
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!