2015-02-23 86 views
1

我有一个上下文菜单,当用户右键单击包含两个菜单项时出现。第一个项目有一个复选标记,而不是图标,然后在用户右键单击下一个被点击的位置时选中一个复选标记。我将IsCheckable和IsChecked都设置为'False',但复选标记仍然出现。不知道我做错了什么,有什么想法?删除MenuItems中的复选标记?

这是我第一次右键点击,我不想那个复选标记在那里。

First right-click

这是,如果我选择“添加航点”在第一时间,便又单击显示的内容。它应该每次都显示,但如果我点击“添加已知对象”,复选标记将始终显示。

After second right-click after hitting add waypoint

   <ContextMenu Name="nodeContextMenu" > 
        <MenuItem x:Name="ko" IsCheckable="False" IsChecked="False" Header="Add Known Object" Click="Ko_Click" > 
         <MenuItem.Icon> 
          <Image Source="ko.png" Height="7.5" Width="7.5" /> 
         </MenuItem.Icon> 
        </MenuItem> 
        <MenuItem x:Name="wa" IsCheckable="False" IsChecked="False" Header="Add Waypoint" Click="Wa_Click" > 
         <MenuItem.Icon> 
          <Image Source="w.png" Height="7.5" Width="7.5" /> 
         </MenuItem.Icon> 
        </MenuItem> 
       </ContextMenu> 
+0

由于加载主题,您是否有任何隐式'样式'活动?如ExpressionDark.xaml或其他。 'Style'可以重写正在处理IsCheckable的方式。 – savetruman 2015-02-23 18:24:58

+0

不,没有风格,除非有一些默认样式是在没有我做任何事情的情况下设置的。我要上传几张图片来展示它在做什么。 – pfinferno 2015-02-23 18:31:45

+0

添加了一些图像以更好地阐明。 – pfinferno 2015-02-23 18:44:03

回答

0

我曾经有过这些的菜单项为单选按钮,并有相关的是没有使用.IsChecked方法的功能单选按钮的方法。我已经忘记了这一点,并且每次都检查第一项。所以我刚摆脱它,它工作正常。代码导致它的片断如下:

knownObjectMenuItem.IsChecked = //random stuff 
0

我发现各种复杂的WPF解决方案为摆脱菜单项勾选的是真的很痛苦,所以我抛弃了他们。相反,我以非常简单的方式解决了这个问题,方法是在运行时有两个菜单项,一个是菜单项,另一个是使用Visibility = Collapsed在运行时在两个菜单项之间切换。无论您使用绑定还是事件,这都非常简单。