Estoy intentando vincular un comando a un elemento de menú en WPF. Estoy usando el mismo método que he estado trabajando para todos mis otros enlaces de comando, pero no puedo entender por qué no funciona aquí.Mandato de enlace de MVVM al elemento de elemento contextual
estoy actualmente vinculante mis comandos de la siguiente manera:
Command = "{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UserControl}}, Path=DataContext.MyCommand}"
Aquí es donde las cosas van mal (esto está dentro de un control de usuario)
<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 primera funciona como es debido la unión de comandos, pero el segundo se niega a hacer nada. He intentado cambiar el nivel de ancestro y nombrar mi control para acceder a él a través de ElementName en lugar de RelativeSource, pero aún no hay cambios. Sigue diciendo "No se puede encontrar la fuente de enlace con referencia ..."
¿Qué me falta?
que tendría que comprobar, pero el Menultem, esté en un árbol diferente, por lo que no puede encontrar el control de usuario ya que técnicamente es no un antepasado (Snoop podría confirmar si recuerdo este derecho o no). Para los otros enlaces de comando (como el comando para el control Button), ¿por qué no puedes simplemente hacer Command = "{Binding Path = ConnectCommand}"? El botón debe heredar el DataContext del UserControl y, por lo tanto, no requiere toda la sintaxis RelativeSource/FindAncestor. – MetalMikester