none
MenuItem bei MouseEnter DropDown des Untermenüs erstellen RRS feed

  • Frage

  • Hi,

    ich habe ein Menü das sieht so aus:

    <Menu Name="navigationMenu" DockPanel.Dock="Top" MenuItem.Click="MenuButtonHandler" >
        <MenuItem Name="miP1" Header="Page 1" />
        <MenuItem Name="miP2" Header="Page 2" />
        <MenuItem Name="miP3" Header="Page 3" AllowDrop="True" >
            <MenuItem Name="smiP3_1" Header="Page 3 /1 " />
            <MenuItem Name="smiP3_2" Header="Page 3 / 2" />
        </MenuItem>
        <MenuItem Name="miP4" Header="Page 4" />
    </Menu>
     

    Page 1,2 und 4 haben einen Content (Eine Page wird in einem Content-Bereich eingeladen).

    Page 3 hat ein Submenü. Page 3 selbst hat keinen Content, nur die SubMenü-Punkte.

    Ich hätte das Menü gerne so, dass man bei Page 1,2 und 4 jeweils klicken muss und beim hover auf Button Page 3 sich das Submenu öffnet (so wie jetzt, aber ohne dass man Page 3 erst klicken muss).

    Was ich versucht habe ist 

    <MenuItem Name="miP3" ... MouseEnter="miP3_MouseEnter" />
    in der Event-Methode miP3_MouseEnter wollte ich dann einfach MenuButtonHandler aufrufen usw.,
    aber da hatte ich Probleme mit RoutedEventArgs.
    private void miP3_MouseEnter(object sender, MouseEventArgs e)
    {
        RoutedEventArgs args = new RoutedEventArgs();
        args.RoutedEvent = new RoutedEvent();
        args.Source = miP3;
        MenuButtonHandler(navigationMenu, args);
    }
    Fehler: "Für den Typ 'System.Windows.RoutedEvent' sind keine Konstruktoren definiert."
    Damit komme ich leider auch nicht weiter.

    Weiß jemand, wie ich man ein DropDown beim Überfahren des Menüpunktes erreichen kann?

    Grüße!


    www.energiewende-mach-ich-selbst.de

    Mittwoch, 11. Juni 2014 09:52

Antworten

  • Hallo,
    folgende Zeile reicht im MouseEnter-Eventhandler
    (sender as MenuItem).IsSubmenuOpen = true;
    Meistens ist es eine schlechte Idee zu versuchen Events manuell auszulösen. Es hat selten Erfolg und ´kann auch ungewollte Nebenwirkungen haben.
    Für die meisten Controls mit einem DropDown-Teil gibt es eine Eigenschaft zum öffnen und schließen.

    Tom Lambert - C# MVP
    Bitte bewertet- und markiert Beiträge als Antwort. Danke.
    Nützliche Links: .NET Quellcode | C# ↔ VB.NET Konverter
    Ich: Webseite | Code Beispiele | Facebook | Twitter | Snippets

    • Als Antwort markiert frank me Mittwoch, 11. Juni 2014 12:28
    Mittwoch, 11. Juni 2014 12:16
    Moderator

Alle Antworten