This seems to be a pretty popular topic, but...
I have the following 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>
Now, MyCommandObject
is a control which exposes dynamic commands from its DataContext
. You know what's coming next. :)
Basically, the button command works perfectly - when I click it, the DoAction
command on the MyCommandObject
gets executed perfectly. However, the command in the menuitem doesn't get executed. I've tried various tricks such as setting the context menu datacontext
to be the placementTarget
so it can traverse the visual tree of the controls and so on, but nothing's doing.
What particular alignment of RelativeSource
and CommandTarget
runes do I need to get this to work?