可检查的MenuItem中缺少WPF复选标记

时间:2015-03-24 13:33:00

标签: c# wpf mahapps.metro

我正在尝试使用可检查的menuitem。但是复选标记不起作用。 这是代码

<MenuItem Header="Switch to...">
   <MenuItem IsCheckable="True" IsChecked="True" Header="Stroke-Based" StaysOpenOnClick="True" />
   <MenuItem IsCheckable="True" IsChecked="True" Header="Color-Transfer" StaysOpenOnClick="True" />
</MenuItem>

enter image description here

我做错了什么?

1 个答案:

答案 0 :(得分:2)

我和Mahapps自定义menuitem有完全相同的问题。这是我为处理现有menuitem xaml -

的IsChecked触发器而添加的代码

添加此项&#34; CheckMarkPanel&#34;网格并删除图标网格。或者你可以两个都离开,但是我把它移走了。

<Grid Grid.Column="0"
      Margin="6,0,6,0"
      x:Name="CheckMarkPanel"
      VerticalAlignment="Center"
      HorizontalAlignment="Center"
      Visibility="Collapsed">
    <Path x:Name="CheckMarkPath"
        Width="7" Height="7"
        Visibility="Hidden"
        SnapsToDevicePixels="False"
        Stroke="#cccccc"
        Fill="Green"
        StrokeThickness="2"
        Data="M 0 0 L 7 7 M 0 7 L 7 0" />
</Grid>

添加这些多触发条件 -

<MultiTrigger>
    <MultiTrigger.Conditions>
        <Condition Property="IsChecked"
                   Value="true" />
        <Condition Property="Role"
                   Value="SubmenuItem" />
    </MultiTrigger.Conditions>
    <Setter TargetName="CheckMarkPath"
            Property="Visibility"
            Value="Visible" />
</MultiTrigger>
<MultiTrigger>
    <MultiTrigger.Conditions>
        <Condition Property="IsCheckable"
                   Value="true" />
        <Condition Property="Role"
                   Value="SubmenuItem" />
    </MultiTrigger.Conditions>
    <Setter TargetName="CheckMarkPanel"
            Property="Visibility"
            Value="Visible" />
</MultiTrigger>

并折叠CheckMarkPanel对TopLevelHeader / TopLevelItem / subMenutItem的所有可见性。