MenuFlyout Klasse

Definition

Stellt ein Flyout dar, das ein Menü mit Befehlen anzeigt.

/// [Microsoft.UI.Xaml.Markup.ContentProperty(Name="Items")]
/// [Windows.Foundation.Metadata.ContractVersion(Microsoft.UI.Xaml.WinUIContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
/// [Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
class MenuFlyout : FlyoutBase
[Microsoft.UI.Xaml.Markup.ContentProperty(Name="Items")]
[Windows.Foundation.Metadata.ContractVersion(typeof(Microsoft.UI.Xaml.WinUIContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
[Windows.Foundation.Metadata.Threading(Windows.Foundation.Metadata.ThreadingModel.Both)]
public class MenuFlyout : FlyoutBase
Public Class MenuFlyout
Inherits FlyoutBase
<MenuFlyout>
  oneOrMoreItems
</MenuFlyout>
Vererbung
Object IInspectable DependencyObject FlyoutBase MenuFlyout
Abgeleitet
Attribute

Beispiele

Tip

Weitere Informationen, Entwurfsanleitungen und Codebeispiele finden Sie unter Menüs und Kontextmenüs.

Die WinUI 3 Gallery-App enthält interaktive Beispiele für die meisten WinUI 3-Steuerelemente, -Features und -Funktionen. Holen Sie sich die App aus dem Microsoft Store oder holen Sie sich den Quellcode auf GitHub.

In diesem Beispiel wird eine MenuFlyout-Klasse erstellt und die ContextFlyout-Eigenschaft verwendet, eine Eigenschaft, die für die meisten Steuerelemente verfügbar ist, um die MenuFlyout-Klasse als Kontextmenü anzuzeigen.

<Rectangle Height="100" Width="100">
  <Rectangle.ContextFlyout>
    <MenuFlyout>
      <MenuFlyoutItem Text="Change color" Click="ChangeColorItem_Click" />
    </MenuFlyout>
  </Rectangle.ContextFlyout>
  <Rectangle.Fill>
    <SolidColorBrush x:Name="rectangleFill" Color="Red" />
  </Rectangle.Fill>
</Rectangle>
private void ChangeColorItem_Click(object sender, RoutedEventArgs e)
{
    // Change the color from red to blue or blue to red.
    if (rectangleFill.Color == Windows.UI.Colors.Red)
    {
        rectangleFill.Color = Windows.UI.Colors.Blue;
    }
    else
    {
        rectangleFill.Color = Windows.UI.Colors.Red;
    }
}

Das nächste Beispiel ist nahezu identisch, aber anstatt die ContextFlyout-Eigenschaft zum Anzeigen der MenuFlyout-Klasse als Kontextmenü zu verwenden, verwendet das Beispiel die FlyoutBase.ShowAttachedFlyout-Eigenschaft , um sie als Menü anzuzeigen.

<Rectangle
  Height="100" Width="100"
  Tapped="Rectangle_Tapped">
  <FlyoutBase.AttachedFlyout>
    <MenuFlyout>
      <MenuFlyoutItem Text="Change color" Click="ChangeColorItem_Click" />
    </MenuFlyout>
  </FlyoutBase.AttachedFlyout>
  <Rectangle.Fill>
    <SolidColorBrush x:Name="rectangleFill" Color="Red" />
  </Rectangle.Fill>
</Rectangle>
private void Rectangle_Tapped(object sender, TappedRoutedEventArgs e)
{
    FlyoutBase.ShowAttachedFlyout((FrameworkElement)sender);
}

private void ChangeColorItem_Click(object sender, RoutedEventArgs e)
{
    // Change the color from red to blue or blue to red.
    if (rectangleFill.Color == Windows.UI.Colors.Red)
    {
        rectangleFill.Color = Windows.UI.Colors.Blue;
    }
    else
    {
        rectangleFill.Color = Windows.UI.Colors.Red;
    }
}

In diesem Beispiel wird gezeigt, wie Sie Menüelemente zur Laufzeit basierend auf sich ändernden Bedingungen in Ihrer App hinzufügen und entfernen können.

<StackPanel Margin="40" Width="220">
    <Rectangle x:Name="Rect1" Height="100" Width="200" 
               Stroke="Black" StrokeThickness="1" Fill="White">
        <Rectangle.ContextFlyout>
            <MenuFlyout x:Name="RectangleColorMenu"/>
        </Rectangle.ContextFlyout>
    </Rectangle>

    <StackPanel>
        <TextBlock TextWrapping="WrapWholeWords"
                   Text="Check colors to include in the menu, then choose a color from the context menu on the rectangle."/>
        <CheckBox Content="Blue" Click="CheckBox_Click" Tag="blue"/>
        <CheckBox Content="Green" Click="CheckBox_Click" Tag="green"/>
        <CheckBox Content="Red" Click="CheckBox_Click" Tag="red"/>
        <CheckBox Content="Yellow" Click="CheckBox_Click" Tag="yellow"/>
    </StackPanel>
</StackPanel>
private void CheckBox_Click(object sender, RoutedEventArgs e)
{
    // Using the Tag property lets you localize the display name
    // without affecting functionality.
    var cb = (CheckBox)sender;
    if (cb.IsChecked == true)
    {
        AddMenuItem(cb.Tag.ToString(), cb.Content.ToString());
    }
    else
    {
        RemoveMenuItem(cb.Content.ToString());
    }
}

private void AddMenuItem(string colorString, string locColorName)
{
    // Set the color.
    Color newColor = Colors.Blue;
    if (colorString == "green")
        newColor = Colors.Green;
    else if (colorString == "red")
        newColor = Colors.Red;
    else if (colorString == "yellow")
        newColor = Colors.Yellow;

    // Create the menu item.
    var newMenuItem = new MenuFlyoutItem();
    newMenuItem.Text = locColorName;
    newMenuItem.Click += (s, e1) =>
    {
        Rect1.Fill = new SolidColorBrush(newColor);
    };

    // Add the item to the menu.
    RectangleColorMenu.Items.Add(newMenuItem);

    // Sort the menu so it's always consistent.
    var orderedItems =  RectangleColorMenu.Items.OrderBy(i => ((MenuFlyoutItem)i).Text).ToList();
    RectangleColorMenu.Items.Clear();
    foreach (var item in orderedItems)
    {
        RectangleColorMenu.Items.Add(item);
    }
}

private void RemoveMenuItem(string locColorName)
{
    // Get any menu items to remove and remove them.
    var items = RectangleColorMenu.Items.Where(i => ((MenuFlyoutItem)i).Text == locColorName);
    foreach (MenuFlyoutItem item in items)
    {
        RectangleColorMenu.Items.Remove(item);
    }
}

Hinweise

Tip

Weitere Informationen, Entwurfsanleitungen und Codebeispiele finden Sie unter Menüs und Kontextmenüs.

MenuFlyout zeigt vorübergehend eine Liste von Befehlen oder Optionen an, die sich auf die aktuelle Aktion des Benutzers beziehen.

Menü-Flyout-Steuerelement

Verwenden Sie ein Flyout-Steuerelement , um einzelne Elemente und ein MenuFlyout-Steuerelement anzuzeigen, um ein Menü mit Elementen anzuzeigen. Weitere Informationen finden Sie unter Menüs und Kontextmenüs.

Ein MenuFlyout-Steuerelement kann als Wert der Button.Flyout-Eigenschaft verwendet werden. Dies wird in der Regel als Teil einer UI-Definition der Seite in XAML festgelegt. Schaltfläche ist das einzige Steuerelement, das über eine dedizierte Flyout-Eigenschaft verfügt. Bei Festlegung als Button.Flyout wird das MenuFlyout angezeigt, wenn auf die Schaltfläche getippt oder anderweitig aufgerufen wird.

Wenn Sie ein MenuFlyout anderen Steuerelementen als Inhaltsmenü zuordnen möchten, verwenden Sie die ContextFlyout-Eigenschaft , die für jedes UIElement verfügbar ist.

Sie können die angefügte FlyoutBase.AttachedFlyout-Eigenschaft verwenden, um ein MenuFlyout anderen Steuerelementen als normales Menü zuzuordnen. Wenn ein MenuFlyout anderen UI-Elementen mithilfe von FlyoutBase.AttachedFlyout zugewiesen wird, müssen Sie entweder die ShowAt-Methode oder die statische ShowAttachedFlyout-Methode aufrufen, um das Flyout anzuzeigen.

Steuerelementstil und -vorlage

Sie können die Standardformatvorlage und ControlTemplate ändern, um dem Steuerelement eine eindeutige Darstellung zu verleihen. Informationen zum Ändern des Stils und der Vorlage eines Steuerelements finden Sie unter XAML-Formatvorlagen. Die Standardformatvorlage, Vorlage und Ressourcen, die das Aussehen des Steuerelements definieren, sind in der generic.xaml Datei enthalten. Für Entwurfszwecke wird generic.xaml mit dem Windows App SDK NuGet-Paket installiert. Standardmäßig ist der Speicherort \Users\<username>\.nuget\packages\microsoft.windowsappsdk\<version>\lib\uap10.0\Microsoft.UI\Themes\generic.xaml. Stile und Ressourcen aus verschiedenen Versionen des SDK können unterschiedliche Werte aufweisen.

XAML enthält auch Ressourcen, mit denen Sie die Farben eines Steuerelements in verschiedenen visuellen Zuständen ändern können, ohne die Steuerelementvorlage zu ändern. Das Ändern dieser Ressourcen wird bevorzugt, um Eigenschaften wie Hintergrund und Vordergrund festzulegen. Weitere Informationen finden Sie im Abschnitt "Leichtgewichtige Formatierung" im Artikel zu XAML-Formatvorlagen .

Konstruktoren

Name Beschreibung
MenuFlyout()

Initialisiert eine neue Instanz der MenuFlyout-Klasse .

Eigenschaften

Name Beschreibung
AllowFocusOnInteraction

Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob das Element automatisch den Fokus erhält, wenn der Benutzer damit interagiert.

(Geerbt von FlyoutBase)
AllowFocusWhenDisabled

Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob das Steuerelement den Fokus erhalten kann, wenn es deaktiviert ist.

(Geerbt von FlyoutBase)
AreOpenCloseAnimationsEnabled

Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob Animationen wiedergegeben werden, wenn das Flyout geöffnet oder geschlossen wird.

(Geerbt von FlyoutBase)
Dispatcher

Gibt immer in einer Windows App SDK-App zurück null . Verwenden Sie stattdessen DispatcherQueue .

(Geerbt von DependencyObject)
DispatcherQueue

Ruft ab DispatcherQueue , dem dieses Objekt zugeordnet ist. Dies DispatcherQueue stellt eine Einrichtung dar, die auf den DependencyObject UI-Thread zugreifen kann, auch wenn der Code von einem Nicht-UI-Thread initiiert wird.

(Geerbt von DependencyObject)
ElementSoundMode

Dient zum Abrufen oder Festlegen eines Werts, der die Einstellung des Steuerelements für die Wiedergabe von Sounds angibt.

(Geerbt von FlyoutBase)
InputDevicePrefersPrimaryCommands

Ruft einen Wert ab, der angibt, ob das Eingabegerät zum Öffnen des Flyouts die sekundären Befehle nicht einfach öffnet.

(Geerbt von FlyoutBase)
IsConstrainedToRootBounds

Ruft einen Wert ab, der angibt, ob das Flyout innerhalb der Grenzen des XAML-Stamms angezeigt wird. Diese Eigenschaft ist immer true für Windows App SDK Apps.

(Geerbt von FlyoutBase)
IsOpen

Ruft einen Wert ab, der angibt, ob das Flyout geöffnet ist.

(Geerbt von FlyoutBase)
Items

Ruft die Sammlung ab, die zum Generieren des Inhalts des Menüs verwendet wird.

LightDismissOverlayMode

Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob der Bereich außerhalb einer Benutzeroberfläche mit hellem Ausblenden abgedunkelt ist.

(Geerbt von FlyoutBase)
MenuFlyoutPresenterStyle

Ruft die Formatvorlage ab, die beim Rendern des MenuFlyouts verwendet wird, oder legt diese fest.

MenuFlyoutPresenterStyleProperty

Identifies the MenuFlyoutPresenterStyle dependency property.

OverlayInputPassThroughElement

Dient zum Abrufen oder Festlegen eines Elements, das Zeigereingabeereignisse auch dann empfangen soll, wenn es sich unterhalb der Überlagerung des Flyouts befindet.

(Geerbt von FlyoutBase)
Placement

Dient zum Abrufen oder Festlegen der Standardplatzierung, die für das Flyout verwendet werden soll, im Verhältnis zum Platzierungsziel.

(Geerbt von FlyoutBase)
ShouldConstrainToRootBounds

Dient zum Abrufen oder Festlegen eines Werts, der angibt, ob das Flyout innerhalb der Grenzen des XAML-Stamms angezeigt werden soll.

(Geerbt von FlyoutBase)
ShowMode

Dient zum Abrufen oder Festlegen eines Werts, der angibt, wie sich ein Flyout verhält, wenn angezeigt wird.

(Geerbt von FlyoutBase)
SystemBackdrop

Ruft den Systemhintergrund ab, der auf dieses Flyout angewendet werden soll, oder legt diesen fest. Der Hintergrund wird hinter dem Flyoutinhalt gerendert.

(Geerbt von FlyoutBase)
Target

Ruft das Element ab, das als Platzierungsziel des Flyouts verwendet werden soll.

(Geerbt von FlyoutBase)
XamlRoot

Dient zum Abrufen oder Festlegen des XamlRoot-Steuerelements, in dem dieses Flyout angezeigt wird.

(Geerbt von FlyoutBase)

Methoden

Name Beschreibung
ClearValue(DependencyProperty)

Löscht den lokalen Wert einer Abhängigkeitseigenschaft.

(Geerbt von DependencyObject)
CreatePresenter()

Wenn ein Steuerelement in einer abgeleiteten Klasse überschrieben wird, wird ein Steuerelement initialisiert, um den Flyoutinhalt entsprechend dem abgeleiteten Steuerelement anzuzeigen. Hinweis: Diese Methode hat keine Basisklassenimplementierung und muss in einer abgeleiteten Klasse überschrieben werden.

(Geerbt von FlyoutBase)
GetAnimationBaseValue(DependencyProperty)

Gibt einen Basiswert zurück, der für eine Abhängigkeitseigenschaft eingerichtet wurde, was in Fällen angewendet wird, in denen eine Animation nicht aktiv ist.

(Geerbt von DependencyObject)
GetValue(DependencyProperty)

Gibt den aktuellen effektiven Wert einer Abhängigkeitseigenschaft aus einem DependencyObject zurück.

(Geerbt von DependencyObject)
Hide()

Schließt das Flyout.

(Geerbt von FlyoutBase)
OnProcessKeyboardAccelerators(ProcessKeyboardAcceleratorEventArgs)

Wird direkt vor der Verarbeitung einer Tastenkombination (Tastenkombination) in Ihrer App aufgerufen. Wird immer aufgerufen, wenn Anwendungscode oder interne Prozesse ProcessKeyboardAccelerators aufrufen. Überschreiben Sie diese Methode, um die Standardmäßige Zugriffstastenbehandlung zu beeinflussen.

(Geerbt von FlyoutBase)
ReadLocalValue(DependencyProperty)

Gibt den lokalen Wert einer Abhängigkeitseigenschaft zurück, wenn ein lokaler Wert festgelegt wird.

(Geerbt von DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Registriert eine Benachrichtigungsfunktion, um Änderungen an einer bestimmten DependencyProperty für diese DependencyObject-Instanz zu überwachen.

(Geerbt von DependencyObject)
SetValue(DependencyProperty, Object)

Legt den lokalen Wert einer Abhängigkeitseigenschaft für ein DependencyObject fest.

(Geerbt von DependencyObject)
ShowAt(DependencyObject, FlyoutShowOptions)

Zeigt das Flyout in Relation zum angegebenen Element mithilfe der angegebenen Optionen an.

(Geerbt von FlyoutBase)
ShowAt(FrameworkElement)

Zeigt das Flyout in Relation zum angegebenen Element an.

(Geerbt von FlyoutBase)
ShowAt(UIElement, Point)

Zeigt das Flyout an, das im angegebenen Offset im Verhältnis zum angegebenen Zielelement platziert wird.

TryInvokeKeyboardAccelerator(ProcessKeyboardAcceleratorEventArgs)

Versucht, eine Tastenkombination (Zugriffstaste) aufzurufen.

(Geerbt von FlyoutBase)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

Bricht eine Änderungsbenachrichtigung ab, die zuvor durch Aufrufen von RegisterPropertyChangedCallback registriert wurde.

(Geerbt von DependencyObject)

Ereignisse

Name Beschreibung
Closed

Tritt auf, wenn das Flyout ausgeblendet ist.

(Geerbt von FlyoutBase)
Closing

Tritt auf, wenn das Flyout ausgeblendet wird.

(Geerbt von FlyoutBase)
Opened

Tritt auf, wenn das Flyout angezeigt wird.

(Geerbt von FlyoutBase)
Opening

Tritt auf, bevor das Flyout angezeigt wird.

(Geerbt von FlyoutBase)

Gilt für:

Weitere Informationen