1

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

这是我第一次右键单击,我不想要那个复选标记。

首先右键

如果我第一次选择“添加航点”并再次右键单击,这就是显示的内容。它应该每次都显示,但是如果我单击“添加已知对象”,则始终会出现复选标记。

点击添加航点后第二次右键单击后

                <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>
4

2 回答 2

1

我发现各种复杂的 WPF 解决方案来摆脱菜单项复选标记真的很痛苦,所以我把它们都扔掉了。相反,我以一种非常简单的方式解决了这个问题,在运行时有两个菜单项实际上是一个菜单项,并使用 Visibility=Collapsed 在运行时在两者之间交替。无论您使用绑定还是事件,这都非常简单。

于 2017-08-17T10:23:39.223 回答
0

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

knownObjectMenuItem.IsChecked = //random stuff
于 2015-02-23T18:58:00.300 回答