У меня есть 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, каскад открытых подменю открывается для выбранного элемента:
![First Drop-down](https://i.stack.imgur.com/GQoaA.jpg)
Однако, когда я покидаю контекстное меню и повторно открываю его, выбранное меню НЕ открывается:
![Next Drop-down](https://i.stack.imgur.com/hRZXk.jpg)
Кто-нибудь знает почему и как это исправить?