从MenuItems中删除复选标记?

时间:2015-02-23 18:09:46

标签: c# wpf contextmenu menuitem checkmark

我有一个上下文菜单,当用户右键单击包含两个菜单项时会出现。第一项有一个复选标记而不是图标,然后在下次用户右键单击时点击任何一个复选标记。我将IsCheckable和IsChecked都设置为'False',但仍显示复选标记。不知道我做错了什么,有什么想法吗?

这是我第一次右键单击,我不希望那里有复选标记。

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>

2 个答案:

答案 0 :(得分:0)

我曾经将这些菜单项作为单选按钮,并且有一个与使用.IsChecked方法执行功能的单选按钮相关的方法。我忘记了这一点,每次都检查第一件物品。所以我摆脱它,它工作正常。导致它的代码片段如下:

knownObjectMenuItem.IsChecked = //random stuff

答案 1 :(得分:0)

我找到了各种精心设计的WPF解决方案来摆脱菜单项复选标记真的很痛苦,所以我抛弃了它们。相反,我通过在运行时为一个菜单项提供两个菜单项以非常简单的方式解决它,并使用Visibility = Collapsed在运行时在两者之间交替。无论您使用绑定还是事件,这都非常简单。