我有一個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
你能用更多級別的菜單測試嗎?每次重新開放會導致重新開放一個級別還是一直不打開最終菜單? –