¿Cómo acceder a un control desde un menú contextual a través del árbol visual?

Este parece ser un tema bastante popular, pero ...

Tengo el siguiente 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>

Ahora,MyCommandObject es un control que expone comandos dinámicos desde suDataContext. Sabes lo que viene después. :)

Básicamente, el comando de botón funciona a la perfección: cuando lo hago, el botónDoAction comando en elMyCommandObject se ejecuta perfectamente. Sin embargo, el comando en el menuitem no se ejecuta. He probado varios trucos como configurar el menú contextualdatacontext ser elplacementTarget para que pueda atravesar el árbol visual de los controles, etc., pero nada está haciendo.

¿Qué alineación particular deRelativeSource yCommandTarget ¿Qué runas necesito para que esto funcione?

Respuestas a la pregunta(1)

Su respuesta a la pregunta