1

ctrl + メニューを押して、次のコンテキスト メニューのみを開きたい:

<Window.ContextMenu>
    <ContextMenu>
        <MenuItem Name="item0" Header="mode_0"/>
    </ContextMenu>
</Window.ContextMenu>

ウィンドウのボタンにバインドされた別のコンテキスト メニューがあります。どの要素がフォーカスされていても、ウィンドウ コンテキスト メニューを開くことができるようにしたいと考えています。ボタンがフォーカスされているなど、いつでもウィンドウコンテキストを開くことができないのを防ぐため。

私はそれを開こうとしました:

Context.Menu.name.isOpened = true;

押されたキーイベントをチェックした後、メニューボタンを離した直後に contextMenu が閉じます。誰もがより良い..そして作業方法を知っていますか?

4

3 に答える 3

2

ウィンドウのメニューキーを無効にする必要があると思います。そうしないと、OSが解決しようとします..

そんな感じ:

    public MainWindow()
    {
      InitializeComponent();
      this.PreviewKeyUp += MainWindow_PreviewKeyUp;

    }

    void MainWindow_PreviewKeyUp(object sender, KeyEventArgs e)
    {
      if (e.Key == Key.Apps)
      {
        e.Handled = true;
      }
    }

その後、独自のコンテキスト メニューをプログラムで開きます。

于 2013-08-20T08:58:01.123 に答える
1

あなたが探しているものを正しく理解しているかどうかわかりません。
あなたはおそらくそのようなことをするべきです:

コマンドを定義する

 OpenMenu = new RoutedUICommand("OpenMenu ", "OpenMenu ", typeof(Commands), new   InputGestureCollection { 
                new KeyGesture(Key.O, ModifierKeys.Control, "Ctrl+O") });

あなたのウィンドウでそれを使用してください

    <Window.CommandBindings>
        <CommandBinding Command="local:Commands.OpenMenu "
                        Executed="OpenMenuExecuted" />
   </Window.CommandBindings>

    private void OpenMenuExecuted(object sender, ExecutedRoutedEventArgs e)
    {
           this.ContextMenu.IsOpen = true;          
    }

注: 右クリック ボタンでウィンドウを開きたくない場合は、イベント ハンドラーをContextMenuアタッチ し、ContextMenuOpeninge.Handled = true;

于 2013-08-20T08:57:03.277 に答える
0

ああ、メニューボタンはkeyUpイベントでトリガーされます...私はkeyDownイベントを聞いてきました。そのため、キーを押したときにメニューが開き、メニュー ボタンを放すとメニューが閉じます。

于 2013-08-20T09:31:31.243 に答える