Удалить галочку с MenuItems?

У меня есть контекстное меню, которое появляется, когда пользователь щелкает правой кнопкой мыши и содержит два пункта меню. Первый элемент имеет галочку вместо значка, а затем галочка ставится на тот элемент, который будет нажат в следующий раз, когда пользователь щелкнет правой кнопкой мыши. У меня для 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>

person pfinferno    schedule 23.02.2015    source источник
comment
Есть ли у вас активные неявные Style из-за загруженных тем? Например, ExpressionDark.xaml или что-то еще. Style может иметь приоритет над тем, как обрабатывается IsCheckable.   -  person savetruman    schedule 23.02.2015
comment
Нет, никаких стилей, если только не установлен какой-то стиль по умолчанию, без моего вмешательства. Я собираюсь загрузить несколько изображений, чтобы показать, что он делает.   -  person pfinferno    schedule 23.02.2015
comment
Добавлено несколько изображений для лучшего понимания.   -  person pfinferno    schedule 23.02.2015


Ответы (2)


Я обнаружил, что различные сложные решения WPF для избавления от галочки пункта меню очень болезненны, поэтому я отказался от них всех. Вместо этого я решил это очень простым способом, имея два пункта меню для того, что фактически является одним пунктом меню во время выполнения, и использовал Visibility=Collapsed для переключения между ними во время выполнения. Это невероятно просто, используете ли вы привязки или события.

person Bent Tranberg    schedule 17.08.2017

Раньше у меня были эти пункты меню в виде переключателей, и у меня был метод, связанный с переключателями, который выполнял функцию с использованием метода .IsChecked. Я забыл об этом, и каждый раз проверялся первый элемент. Так что я просто избавился от него, и он работает нормально. Фрагмент кода, вызывающий это, приведен ниже:

knownObjectMenuItem.IsChecked = //random stuff
person pfinferno    schedule 23.02.2015