2017-04-13 1 views
0

Ich erstelle einen Kontext und ich versuche, die Untermenüs für Elemente automatisch erscheinen zu lassen, wenn Sie mit der Maus darüber fahren.MenuShowDelay - auch für Tastatur?

Fehle ich eine Einstellung, um dies zu ermöglichen? Wenn keine Vorschläge, wie es funktioniert bitte?

Danke.

Edit - Hmm, vielleicht bin ich nicht klar - zur Zeit funktioniert der Maus-Hover richtig - Untermenüs des Hauptkontextmenüs öffnen sich, wenn ich mit der Maus über sie schwebe. Ich versuche, eine ähnliche Sache zu erreichen, wenn ein Menüpunkt von der Tastatur aus fokussiert wird.

+0

http://stackoverflow.com/questions/7774744/bring-up-contextmenu-when-ismouseover-on-a-button-using-only-xaml –

Antwort

0

Griff GotKeyboardFocus und IsSubmenuOpen auf true setzen. Hier ist ein Beispiel, auf dem Sie ein Verhalten aufbauen können.

<TextBox Text="test"> 
    <TextBox.ContextMenu> 
     <ContextMenu> 
      <MenuItem Header="111"></MenuItem> 
      <MenuItem Header="222"></MenuItem> 
      <MenuItem Header="333" GotKeyboardFocus="MenuItem_GotKeyboardFocus"> 
       <MenuItem Header="fff" /> 
       <MenuItem Header="ggg" /> 
      </MenuItem> 
      <MenuItem Header="444"></MenuItem> 
     </ContextMenu> 
    </TextBox.ContextMenu> 
</TextBox> 

    private void MenuItem_GotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e) 
    { 
if ((sender as MenuItem) != null) 
      { 
       Dispatcher.BeginInvoke((Action)(() => { (sender as MenuItem).IsSubmenuOpen = true; }), null); 
      } 
    } 
+0

warum brauchen Sie es mit BeginInvoke zu tun? –

+0

Ohne hatte ich ein Problem mit Pfeil links und Flucht im Untermenü. – Rekshino

+0

Funktioniert es? Hast du es versucht? – Rekshino

Verwandte Themen