Ich denke, es ist eine ziemlich spezifische Frage, aber ich versuche zu binden, wie CommandParameter
das Content
von einem GridViewColumnHeader
. Wie Sie im Code sehen werden, funktioniert es, wenn ich es im zweiten Setter des Stils mache: <Setter Property="CommandParameter" Value="{Binding Content, RelativeSource={RelativeSource Self}}"/>
. Aber es funktioniert nicht für meine Menüpunkte. Wie soll ich sie binden? Hier ist der Code:
<Style BasedOn="{StaticResource {x:Type GridViewColumnHeader}}" TargetType="GridViewColumnHeader">
<Setter Property="Command" Value="{Binding SortBy}" />
<Setter Property="CommandParameter" Value="{Binding Content, RelativeSource={RelativeSource Self}}" />
<Setter Property="ContextMenu">
<Setter.Value>
<ContextMenu Tag="{Binding Content, RelativeSource={RelativeSource AncestorType=GridViewColumnHeader}}">
<MenuItem CommandParameter="{Binding Tag, RelativeSource={RelativeSource AncestorType=ContextMenu}}"
Header="{UI:Language @{SortAscending}}"
Command="{Binding SortAscending}" />
Antworten:
2 für die Antwort № 1Binde den Tag
Eigentum an der PlacementTarget
des ContextMenu
selbst:
<ContextMenu Tag="{Binding PlacementTarget.Content, RelativeSource={RelativeSource Self}}">
<MenuItem CommandParameter="{Binding Tag, RelativeSource={RelativeSource AncestorType=ContextMenu}}"
1 für die Antwort № 2
Hier ist, was für mich funktioniert hat, ein Mitarbeiter hat mir die Lösung gegeben, mir fehlte ein "DataContext", da "GridView" tatsächlich in einer "ListView" enthalten ist:
<ContextMenu Tag="{Binding PlacementTarget.CommandParameter, RelativeSource={RelativeSource Self}}"
DataContext="{Binding Path=PlacementTarget.DataContext, RelativeSource={RelativeSource Self}}">
Alles was ich getan habe ist a DataContext
zum ContextMenu
. hoffe, das hilft allen, die ähnliche Probleme haben könnten.