#

UWP: Drowdown Menü MenuFlyout

 

Ich möchte in meiner UWP Universal Windows Platform Anwendung (Photo Explorer, Win10 Photo Gallery)

eine Liste als DropDown Liste einbauen, die verschiedene Elemente einer Auswahl anzeigt, wenn man auf das Dropdown Element klickt.

#: Dropdown, Kombinations Control

 

 

Ein Dropdown Menü wird in UWP mit dem MenuFlyout erstellt.

Das Flyout kann innerhalb eines Buttons als Button.Flyout Subdefinition eingebaut werden.

<Button >

    <Button.Flyout >

        <MenuFlyout x:Name="menuFolders"  >

            <MenuFlyoutItem Text="Folder1" />

        </MenuFlyout  >

    </Button.Flyout >

</Button >

 

 

Dadurch wird es direkt mit dem Click-event des Buttons verbunden und er Button öffnet automatisch das Dropdown-Menü unterhalb des Buttons.

 

 

In XAML:

Der Definition muss man darauf achten, dass man ein MenuFlyout nur einbauen kann innerhalb von <UIElement.Flyout>..</UIElement.Flyout>  oder im Page.Resources bereich

 

Hier das XAML Code Beispiel welches ein Menu unterhalb des Buttons mit 3 Menüpunkten einbaut.

Der erste Menüpunkt reagiert hierbei mit dem Click-Event Click="menuFolderItem_Click"    

<Button Grid.Row="0" Grid.Column="2" x:Name="btnSelect_Album" HorizontalAlignment="Stretch"  VerticalAlignment="Stretch" Margin="1,0,0,0"   FontFamily="Segoe UI Symbol" FontSize="26" >

    <SymbolIcon Symbol="ShowBcc"  />

    <Button.Flyout >

        <MenuFlyout x:Name="menuFolders"  >

            <MenuFlyoutItem Text="Folder1" Click="menuFolderItem_Click"    />

            <MenuFlyoutItem Text="Folder2"   />

            <MenuFlyoutItem Text="Folder long-Text C:\_Daten\Desktop\UWP\_vorlagen\Windows-universal-samples-master\Samples\XamlContextMenu\cs"   ToolTipService.ToolTip="C:\_Daten\Desktop\UWP\_vorlagen\Windows-universal-samples-master\Samples\XamlContextMenu\cs" />

        </MenuFlyout>

 

    </Button.Flyout>

 

Zu beachten ist auch, dass überlange Texte abgeschnitten werden.

Deshalb kann man ein ToolTipService.ToolTip einbauen, wodurch das komplette Text-Info Element als ToolTip Fly-over angezeigt wird.

 

Während der Definition in XAML wird in der Xaml Entwurfsansicht das MenuFlyout auch schon angezeigt

 

 

C# Code

Das einzelne Menü-Element kann mit einem Click-Event reagieren

<MenuFlyoutItem Text="Folder1" Click="menuFolderItem_Click"    />

 

Im folgenden Event wird dann aus dem Sender das MenuFlyoutItem ausgewertet und hieraus der Text oder sonstige Informationen entnommen.

        private void menuFolderItem_Click(object sender, RoutedEventArgs e)

        {

            MenuFlyoutItem item = sender as MenuFlyoutItem;

            clsSys.show_Message("flyout " + item.Text);

        }

 

 

Dynamisches Laden von einzelnen Menüpunkten zur Laufzeit:

 

Einzelne Menü-Punkte, Listenpunkte kann man mit Items.add(MenuFlyoutItem) zur Laufzeit erweitern

Hier ein Code-Beispiel

//----< Zeige EntryPoint >----

                string sPath = Convert.ToString(varEntryPoint.Value);

                MenuFlyoutItem item = new MenuFlyoutItem();

                item.Text = sPath;

                menuFolders.Items.Add(item);

                //----</ Zeige EntryPoint 1 >----

 

 


 
 
als Video Tutorial

Mobile

.

yesmovies