Wie greife ich aus einem ContextMenu-Menü über den visuellen Baum auf ein Steuerelement zu?

Dies scheint ein ziemlich beliebtes Thema zu sein, aber ...

Ich habe folgende 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>

Jetzt,MyCommandObject ist ein Steuerelement, das dynamische Befehle von seinem verfügbar machtDataContext. Sie wissen, was als nächstes kommt. :)

Grundsätzlich funktioniert der Button-Befehl einwandfrei - wenn ich darauf klicke, wird derDoAction Befehl auf derMyCommandObject wird perfekt ausgeführt. Der Befehl im Menü wird jedoch nicht ausgeführt. Ich habe verschiedene Tricks ausprobiert, wie zum Beispiel das Einstellen des Kontextmenüsdatacontext zu seinplacementTarget es kann also den visuellen Baum der Steuerelemente durchlaufen usw., aber nichts tut.

Welche besondere Ausrichtung vonRelativeSource undCommandTarget Runen brauche ich, um das zum Laufen zu bringen?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage