関連する問題がありました - ContextMenuのクリック イベントのマウス位置をキャプチャしたかったのです。問題: メニューの親(イメージ コントロール) が CommandParameter ElementName によって認識されませんでした。
参考までに、メニューを名前空間に追加する前に受け取ったバインディング エラーは次のとおりです。
System.Windows.Data Error: 4 : Cannot find source for binding with reference 'ElementName=imgArena'. BindingExpression:(no path); DataItem=null; target element is 'MenuItem' (Name='mnuAddItem'); target property is 'CommandParameter' (type 'Object')
どうやら、WPF コンテキスト メニューはコントロールとは異なるビジュアル ツリーに属しているため、バインドが非常にイライラします。
いくつかの調査の後、コードビハインドのコンストラクターに配置したこの簡単な修正を見つけました。
NameScope.SetNameScope(mnuGrid, NameScope.GetNameScope(this));
「mnuGrid」はコンテキスト メニューの名前です。
これを行った後、Beta Vulgaris が上記で行ったのとまったく同じように、コントロールをパラメーターとしてコマンドに渡すことができました。
参考までに、私の XAML は次のようになります。
<Image Name="imgArena" >
<Image.ContextMenu>
<ContextMenu Name="mnuGrid">
<MenuItem Header="Place _Entry" Name="mnuAddItem"
Command="{Binding AddEntryCmd}"
CommandParameter="{Binding ElementName=imgArena}" />
</ContextMenu>
<Image.ContextMenu>
</Image>