J'utilise le modèle M-V-VM dans une application WPF. Je lie un ViewModel à un ContentControl et utilise un modèle de données défini dans les ressources de la fenêtre pour afficher la vue (un UserControl) pour ce ViewModel.Liaison à une commande dans une grille de données
Dans ViewModel, j'ai une collection d'éléments. Je lie cette collection à la grille de données fournie dans la boîte à outils WPF. Toujours dans le modèle de vue, j'ai une commande RemoveItem définie qui prend un argument pour l'ID d'élément à supprimer.
Comment me lier à cette commande dans la grille de données? Le contexte de données de la grille est cette collection, donc quelque chose comme:
<Button Command="{Binding Path=RemoveCommand}" CommandParameter="{Binding Path=id}">X</Button>
ne fonctionne pas - il ne trouve pas la commande. Je pense que j'ai besoin de relier RelativeSource, mais à quoi cela ressemblerait-il? Le type Ancêtre serait-il UserControl ou ContentControl? Où se trouve ma ViewModel en tant que DataContext?
Ou suis-je loin?
Génial. Merci, Kent! –
Bienvenue. Une autre méthode consiste à exposer une collection de modèles de vue enfants plutôt qu'une collection d'éléments de données. Ensuite, ces modèles de vue enfant peuvent avoir une propriété qui expose la commande, ce qui vous évite d'introduire des liaisons fragiles comme celles-ci. –
Merci, cela a résolu mon problème. –