私は次のようなContextMenuの一部を持ってTabControlいます:
<TabControl Name="MyTabControl">
<TabControl.ContextMenu>
<ContextMenu Name="MyContextMenu" IsEnabled="False" StaysOpen="True">
<MenuItem Header="Item1"></MenuItem>
...
</ContextMenu>
</TabControl.ContextMenu>
</TabControl>
ご覧のとおり、メニューは無効になっています。プログラムの後半で有効になりますが、現時点では、無効な状態のままにしておく必要があります。問題は、右クリックしTabControlて無効なメニューが表示されると、最初に開いた場所に留まり、他の右クリックで移動したり、どこかを左クリックしても消えないことです。
それを取り除く唯一の方法は、それを有効にしてから右/左クリックするか、MyContextMenu.Visibility = Visibility.Collapsed/Hidden;
StaysOpen-property を に設定してみましたFalse。その後、メニューが一度無効な状態で開きます。左クリックすると消え、有効になっても再び表示されません。
これを回避する唯一の方法は、StaysOpen-property とともに -property を変更するIsEnabledことですが、メニューが無効な状態で一度だけ開き、その後は開かないというのは少し奇妙です。
誰かが私に説明してくれることを願っています.なぜ無効なメニューが閉じず、StaysOpenfalse のプロパティが一度だけ開くのか.