選択できる項目 (MenuItem) を持ついくつかのサブメニューを持つ ContextMenu があります。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;
}
また、1 つの項目のみがチェックされるようにする他のコードもあります。
これは、サブメニューでアイテムを初めて選択したときにうまく機能するようです. ContextMenu を再度開くと、開いているサブメニューがカスケードして、選択した項目に開きます。
ただし、コンテキスト メニューを離れてもう一度開くと、選択したメニューが開きません。
誰かがそれを修正する理由と方法を知っていますか?