每次我认为我终于得到 WPF/XAML
这样一些不直观的东西出现了(咆哮)......
我想为菜单项实现“穷人”切换按钮。基本上,当它被检查时,它应该说“公制”,当它未被检查时 - “帝国”。我认为XAML
应该相当简单,但我无法让它发挥作用。
这是我试过的:
<MenuItem IsCheckable="True" IsChecked="True">
<Style>
<Style.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Header" Value="Metric"/>
</Trigger>
<Trigger Property="IsChecked" Value="False">
<Setter Property="Header" Value="Imperial"/>
</Trigger>
</Style.Triggers>
</Style>
</MenuItem>
它给我一个错误“会员'IsChecked'未被识别或不可信”(对于Header而言相同)。
当我执行<Style TargetType="{x:Type MenuItem}">
时,错误消失了,但它没有做任何事情。
我在没有<Style>
<MenuItem.Triggers>
<Trigger...>
</MenuItem.Triggers>
首先,它给了我与上面相同的错误,但是当我将属性更改为Property="MenuItem.IsChecked"
时,它开始尖叫,只允许使用EventTriggers。
我也试过DataTrigger
(已授予,我仍然不完全理解触发器之间的差异):
<DataTrigger Binding="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type MenuItem}}, Path=IsChecked}" Value="True">
<Setter Property="Header" Value="Metric"/>
</DataTrigger>
没效果。
帮助......请...
答案 0 :(得分:3)
您必须通过将Style
声明为<Style>
元素的子元素来指定MenuItem的<MenuItem.Style>
属性。
<MenuItem IsCheckable="True" IsChecked="True">
<MenuItem.Style>
<Style TargetType="MenuItem">
<Style.Triggers>
<Trigger Property="IsChecked" Value="True">
<Setter Property="Header" Value="Metric"/>
</Trigger>
<Trigger Property="IsChecked" Value="False">
<Setter Property="Header" Value="Imperial"/>
</Trigger>
</Style.Triggers>
</Style>
</MenuItem.Style>
</MenuItem>