かなり話題になっているようですが…
次の XAML があります。
<internal:MyCommandObject x:Name="CommandModel"/>
<Button DockPanel.Dock="Bottom" Command="{Binding DoAction, ElementName=CommandModel}">
<Button.ContextMenu>
<ContextMenu DataContext="{Binding PlacementTarget, RelativeSource={RelativeSource Self}}">
<MenuItem Command="{Binding DoAction, ElementName=CommandModel}"/>
</ContextMenu>
</Button.ContextMenu>
Click Me
</Button>
は、MyCommandObject
その から動的コマンドを公開するコントロールDataContext
です。あなたは次に何が来るか知っています。:)
基本的に、ボタン コマンドは完全に機能します。クリックすると、DoAction
コマンドMyCommandObject
が完全に実行されます。ただし、メニュー項目のコマンドは実行されません。コントロールのビジュアル ツリーをトラバースできるようにコンテキスト メニューdatacontext
を設定するなど、さまざまなトリックを試しましたが、何もしていません。placementTarget
RelativeSource
これを機能させるには、とルーンの特定の調整がCommandTarget
必要ですか?