Ich kann nicht herausfinden, wie dies zu tun, und man würde denken, es wäre ziemlich einfach.Ändern MenuItem Header und Symbol auf Viewmodel Eigenschaft Bindung
Ich habe eine MenuItem
, die Teil einer ContextMenu
ist. Ich habe eine binding
zu einer booleschen Eigenschaft in einem Viewmodel. Abhängig vom Status dieser Eigenschaft möchte ich den Kopftext und das Symbol der MenuItem
ändern.
Ich könnte sicherlich eine IValueConverter
dafür verwenden, aber ich bin mir sicher, dass es eine elegantere Lösung mit einem DataTemplate
und Triggern gibt. Ich kann einfach nicht das richtige Markup herausfinden.
Der Code ich arbeitete (unten abgeschnitten) hat zwei Probleme: eine der HeaderTemplate
scheint nicht das Symbol zu enthalten, so was wäre der MenuItems
's Text enthält auch das Symbol (normalerweise erscheint das Symbol auf in linker Abschnitt - siehe Bild und vergleichen Sie mit den Menüpunkten Kopieren und Löschen. Darüber hinaus löst das Klicken auf MenuItem
nicht die DataTemplate
Änderungen aus (beachten Sie, dass der Befehl funktioniert, die Viewmodel-Bindung schaltet tatsächlich den True/False-Status um).
<ContextMenu>
<MenuItem Command="{Binding Source={x:Static cmd:Commands.PauseCommand}}"
CommandParameter="{Binding}">
<MenuItem.HeaderTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Image x:Name="img" Source="../Icons/pause.png"/>
<TextBlock x:Name="txt" Text="Pause"/>
</StackPanel>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding IsPaused}" Value="True" >
<Setter Property="Image.Source" Value="../Icons/play.png" TargetName="img"/>
<Setter Property="Text" Value="Play" TargetName="txt"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</MenuItem.HeaderTemplate>
</MenuItem>
Wenn Sie nach unten abstimmen, geben Sie bitte einen Grund an. –
Ich bin nicht der downvoter, aber einige Schnipsel könnten helfen – lokusking
Ich denke, ich suche nach einem allgemeinen Beispiel einer Datatemplate, die die angeforderte Funktion ausführen kann (d. H. Eine Menüvorlage, die Symbol und Header basierend auf Modelleigenschaft ändert). –