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?