Удалить галочку из 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>
2 ответа
Я нашел, что различные сложные решения WPF для избавления от галочки пункта меню были действительно болезненными, поэтому я отказался от них всех. Вместо этого я решил это очень простым способом, имея два пункта меню для того, что фактически является одним элементом меню во время выполнения, и использую Visibility=Collapsed для чередования между ними во время выполнения. Это невероятно просто, используете ли вы привязки или события.
Я имел обыкновение иметь эти пункты меню в качестве переключателей, и у меня был метод, связанный с переключателями, который выполнял функцию, используя метод.IsChecked. Я забыл об этом, и каждый раз проверял первый пункт. Так что я просто избавился от этого, и он отлично работает. Ниже приведен фрагмент кода, вызывающий его:
knownObjectMenuItem.IsChecked = //random stuff