У меня есть ContextMenu с некоторыми подменю, в которых есть элементы (MenuItem), которые можно выбрать. Когда ContextMenu открывается, я хочу рекурсивно открыть текущий выбранный элемент. Итак, у меня есть следующий код:
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;
}
У меня также есть другой код, который гарантирует, что проверяется только один элемент.
Кажется, это отлично работает, когда я впервые выбираю элемент в подменю. Когда я повторно открываю ContextMenu, каскад открытых подменю открывается для выбранного элемента:
Однако, когда я выхожу из контекстного меню и снова открываю его во второй раз, выбранное меню НЕ открывается:
Кто-нибудь знает, почему и как это исправить?