我有一个ContextMenu,其中包含一些可以选择项目(MenuItem)的子菜单。当ContextMenu打开时,我想递归地打开当前选择的项目。所以,我有以下代码:.NET MenuItem.IsSubmenuOpen = true仅在第一次生效
protected override void OnOpened(RoutedEventArgs e) {
base.OnOpened(e);
OpenCurrentSubMenu(Items);
}
private static bool OpenCurrentSubMenu(ItemCollection itemCollection) {
foreach (MenuItem item in itemCollection) {
if (item.IsChecked) {
return true;
}
else if(OpenCurrentSubMenu(item.Items)) {
item.IsSubmenuOpen = true;
return true;
}
}
return false;
}
我也有一些其他代码,以确保只有一个项目被检查。
这在第一次在子菜单中选择一个项目时似乎很有效。当我再次打开文本菜单,打开子菜单级联打开所选项目:
然而,当我离开上下文菜单,然后重新打开它第二次,所选择的菜单不开:
有谁知道为什么和如何解决它?
您的标题显示“IsItemChecked”,但您的代码显示“IsSubmenuOpen”。 –
@ScottRippey - 已更新。谢谢。 – DiamondBack
你能用更多级别的菜单测试吗?每次重新开放会导致重新开放一个级别还是一直不打开最终菜单? –