2010-08-24 7 views
8

Je suis nouveau dans MVVM. Je viens d'apprendre ce modèle et je veux l'utiliser dans mon projet. Je suis déjà comprendre le principe de fonctionnement de ce modèle et j'ai appris comment utiliser les commandes. Mais j'ai des questions sur la façon de gérer les événements d'un autre contrôle, par exemple l'événement ListBox SelectionChanged. ListBox n'a pas d'attribut CommandeComment gérer les événements dans MVVM

+1

Je ne l'ai pas utilisé, mais vous pouvez utiliser CollectionView ou CollectionViewSource pour activer MVVM sur divers contrôles de type de collection. –

Répondre

14

Vous n'avez souvent pas besoin de le faire. Par exemple, vous pouvez simplement lier le modèle SelectedItem propriété à une propriété sur votre vue d » ListBox:

<ListBox ItemsSource="{Binding Customers}" SelectedItem="{Binding SelectedCustomer, Mode=TwoWay}"/> 

Non seulement cela vous donne accès au client sélectionné dans votre modèle de vue, il permet également à votre modèle de vue pour dicter le client sélectionné en définissant la propriété elle-même.

Il existe également d'autres techniques pour "éviter" la gestion directe des événements dans votre code-behind. Par exemple, les comportements attachés. Cependant, vous ne devriez pas avoir peur de gérer les événements directement si le code est uniquement concerné par la vue et rend votre code plus simple.

+0

Idée intéressante. Par exemple, je veux gérer l'événement Mouse RightClick sur DataGrid. Dans ce cas dois-je écrire gestionnaire dans le code derrière ou dois-je utiliser le comportement ci-joint? – Polaris

+1

@ Polaris. regardez les frameworks mvvm (cinch, mvvm light ...) là-bas. Vous trouverez des implémentations telles que EventToCommand Behavior dans laquelle vous pouvez lier des événements à des commandes. et comme kent dit: n'hésitez pas à utiliser codebehing lors du codage des choses liées à la vue :) par exemple BringToView l'élément sélectionné dans une grille – blindmeis

+0

+1 pour le commentaire sur la gestion des événements lorsqu'ils affectent uniquement la couche de vue. Tant de gens oublient ça ... –

0

Pour ajouter un attribut de commande à votre contrôle, il doit hériter de ICommandSource. Vérifiez this poste, pour voir comment c'est accompli.

0

Le BookLibraray demande du WPF Application Framework (WAF) montre comment écouter les événements WPF dans un Model-View-ViewModel (MVVM) application conçue. Il permet à un utilisateur de sélectionner plusieurs livres afin qu'il puisse tous les supprimer à la fois. Voir la classe BookLibrary.Presentation.Views.BookView.

Questions connexes