MVVM de liaison de commande à contextmenu élément

Je suis en train de lier une commande pour un menuitem en WPF. Je suis en utilisant la même méthode que pour tous mes autres liaisons de commande, mais je ne peux pas comprendre pourquoi ça ne fonctionne pas ici.

Je suis actuellement à la liaison de mes commandes comme ceci:

Command = "{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}, Path=DataContext.MyCommand}"

C'est là que ça se passe mal (ce qui est à l'intérieur d'un UserControl)

<Button Height="40" Margin="0,2,0,0" CommandParameter="{Binding Name}" 
                        Command = "{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}, Path=DataContext.ConnectCommand}">

     <Button.ContextMenu>
         <ContextMenu>
             <MenuItem Header="Remove" CommandParameter="{Binding Name}"
                                      Command="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}, Path=DataContext.RemoveCommand}"/>
         </ContextMenu>
     </Button.ContextMenu>
     ...

La première liaison de commande fonctionne comme il le devrait, mais le second refuse de faire quoi que ce soit.
J'ai essayé de changer l'ancêtre de niveau et de nommer mon Contrôle d'accès à travers ElementName au lieu de RelativeSource, mais toujours pas de changement. Il continue en disant: "Impossible de trouver la source de la liaison avec la référence..."

Ce qui me manque?

  • J'ai dû vérifier, mais la MenuItem peut-être un autre arbre, de sorte qu'il ne peut pas trouver l'objet UserControl puisque, techniquement, ce n'est pas un ancêtre (Snoop pourrait confirmer si je me souviens de ce droit ou non). Pour les autres liaisons de commande (telles que la commande pour le contrôle de Bouton), pourquoi tu ne peux pas faire de Commande="{Binding Path=commande connect}" ? Le Bouton doit être hériter du DataContext de la UserControl et donc nécessitent pas l'ensemble de la RelativeSource/FindAncestor de la syntaxe.
InformationsquelleAutor Valyrion | 2012-04-03