WPF Toolkit grille de données Multi-sélection: Comment obtenir SelectedItems?
Je suis en utilisant WPF Toolkit du DataGrid. J'ai activé la propriété sur la grille de données pour permettre la multi-sélection de lignes. Comment puis-je obtenir le SelectedItems? Je suis à l'aide d'un framework MVVM pour lier mon ViewModel de mon point de Vue.
Merci!
Répondu en partie par le stackoverflow.com/a/2615487/284795
OriginalL'auteur Shafique | 2009-10-16
Vous devez vous connecter pour publier un commentaire.
De prendre le projet de Loi, en réponse, la fusion des options 1 et 2, en ajoutant une pincée de propriétés attachées comme une alternative à l'écriture du code-behind, je suis venu avec un Comportement.
Tout d'abord, nous avons le comportement:
C#:
Puis nous de l'ajouter à la grille de données dans le code XAML:
Puis nous le code de la RelayCommand dans le ViewModel:
C#:
La _resultsSelectedItems est simplement une liste d'éléments affichés dans la grille de données:
C#:
Espère que cette aide, un peu utilise à la fois du projet de Loi de méthodes sans avoir à faire référence MVVM Light.
Permettez-moi de travailler sur ce!
Je reçois selectedItems n'est pas une énumération....
foreach (item in selectedItems)
OriginalL'auteur samneric
J'ai été à la recherche d'une réponse à cette question ainsi. Les réponses que j'ai trouvé c'est de
1) dans le code-behind de déléguer le travail à une méthode dans le ViewModel passage de la
SelectedItems
liste à partir de la grille de données. Cette collection contient tous les éléments qui sont sélectionnés.Ou
2) utiliser le toolkit MVVM light qui vous permet d'utiliser l'Événement à la Commande et de passer un objet en paramètre directement au ViewModel.
Dans ce cas, vous aurez besoin de lier votre
SelectionChanged
dans votre xaml pour votreselectionchanged
dans le code derrière. Puis dans le code-behind, vous pouvez enregistrer cette liste et l'utiliser pour supprimer les lignes sélectionnées, etc.Si il ya une meilleure façon pour ce faire, j'aimerais savoir, c'est bien.
HTH
Projet de loi
OriginalL'auteur Bill Campbell
Version C# SelectedItemsBehavior classe. Peut-être aider quelqu'un.
OriginalL'auteur windflavour
J'ai réussi à contourner ce problème à l'aide de Relais de Commandes que le projet de Loi mentionné. Il est un peu sale dans les pièces, mais j'ai évité de mettre tout le code dans le fichier.
Tout d'abord, dans votre XAML Lier votre commande sur un bouton, ou tout ce qui déclenche votre RelayCommand.
Vous remarquerez que le paramètre de commande se Lie à un autre élément de l'INTERFACE utilisateur - la grille de données ou ListView vous voulez obtenir les éléments sélectionnés. Cette syntaxe de travail dans Silverlight 3 ainsi que WPF, comme il supporte maintenant l'élément de liaison.
Dans votre modèle d'affichage de votre Commande devrait ressembler à quelque chose comme ceci
Les Éléments Sélectionnés seront retournés comme une SelectedItemCollection, mais vous ne voulez probablement pas cette dépendance dans votre Modèle de Vue. Donc en tapant comme IEnumerable et de faire un peu le casting est votre seule option, hense le "dirtyness'. Mais il maintient votre code derrière propre et le pattern MVVM en tact!
OriginalL'auteur Wilson