Teilen über


MenuFlyout Klasse

Definition

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

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

Windows-Anforderungen

Gerätefamilie
Windows 10 (eingeführt in 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (eingeführt in v1.0)

Beispiele

Tipp

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

Wenn Sie die WinUI 2-Katalog-App installiert haben, klicken Sie hier, um die App zu öffnen und menuFlyout in Aktion zu sehen.

In diesem Beispiel wird ein MenuFlyout-Klasse erstellt, und anschließend wird mit der ContextFlyout-Eigenschaft, die für die meisten Steuerelemente verfügbar ist, die MenuFlyout-Klasse als Kontextmenü angezeigt.

<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 anstelle der ContextFlyout-Eigenschaft zur Anzeige der MenuFlyout-Klasse als Kontextmenü wird die FlyoutBase.ShowAttachedFlyout-Eigenschaft verwendet, um die Klasse 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

Tipp

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 aktuellen Aktionen des Benutzers beziehen.

Menü-Flyoutsteuerelement

Verwenden Sie ein Flyout-Steuerelement , um einzelne Elemente anzuzeigen, und ein MenuFlyout-Steuerelement, 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 in XAML als Teil einer UI-Definition der Seite festgelegt. Button ist das einzige Steuerelement, das über eine dedizierte Flyout-Eigenschaft verfügt. Bei Festlegung auf Button.Flyout wird menuFlyout angezeigt, wenn die Schaltfläche angetippt oder anderweitig aufgerufen wird.

Um ein MenuFlyout anderen Steuerelementen zuzuordnen, verwenden Sie die ContextFlyout-Eigenschaft , die in jedem UIElement verfügbar ist.

Hinweise zu früheren Versionen

Hinweis

Die ContextFlyout-Eigenschaft ist vor dem Windows 10 Anniversary Update (SDK-Version 14393) nicht verfügbar. Verwenden Sie für frühere Versionen die angefügte FlyoutBase.AttachedFlyout-Eigenschaft .

Sie können die angefügte FlyoutBase.AttachedFlyout-Eigenschaft verwenden, um ein MenuFlyout anderen Steuerelementen 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.

Zusätzlich zu den oben aufgeführten Membern gibt es weitere Member der Basisklasse FlyoutBase , die häufig in typischen MenuFlyout-Szenarien verwendet werden:

Steuerelementstil und -vorlage

Sie können den Standardstil und die ControlTemplate ändern, um dem Steuerelement ein eindeutiges Erscheinungsbild zu verleihen. Informationen zum Ändern des Stils und der Vorlage eines Steuerelements finden Sie unter Formatieren von Steuerelementen. Der Standardstil, die Vorlage und die Ressourcen, die das Erscheinungsbild des Steuerelements definieren, sind in der generic.xaml Datei enthalten. Für Entwurfszwecke generic.xaml ist lokal mit der SDK- oder NuGet-Paketinstallation verfügbar.

  • WinUI-Stile (empfohlen): Aktualisierte Formatvorlagen von WinUI finden Sie unter \Users\<username>\.nuget\packages\microsoft.ui.xaml\<version>\lib\uap10.0\Microsoft.UI.Xaml\Themes\generic.xaml.
  • Nicht-WinUI-Stile: Informationen zu integrierten Formatvorlagen finden Sie unter %ProgramFiles(x86)%\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP\<SDK version>\Generic\generic.xaml.

Die Speicherorte können unterschiedlich sein, wenn Sie die Installation angepasst haben. Stile und Ressourcen aus verschiedenen Versionen des SDK haben möglicherweise unterschiedliche Werte.

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 Leichtes Formatieren des Artikels XAML-Formatvorlagen . Einfache Formatierungsressourcen sind ab Windows 10 Version 1607 (SDK 14393) verfügbar.

Versionsverlauf

Windows-Version SDK-Version Wertschöpfung
1809 17763 ShowAt

Konstruktoren

MenuFlyout()

Initialisiert eine neue instance der MenuFlyout-Klasse.

Eigenschaften

AllowFocusOnInteraction

Ruft einen Wert ab, der angibt, ob das Element automatisch den Fokus erhält, wenn der Benutzer mit dem Element interagiert, oder legt diesen fest.

(Geerbt von FlyoutBase)
AllowFocusWhenDisabled

Ruft einen Wert ab, der angibt, ob das Steuerelement den Fokus erhalten kann, wenn es deaktiviert ist, oder legt diesen fest.

(Geerbt von FlyoutBase)
AreOpenCloseAnimationsEnabled

Ruft einen Wert ab, der angibt, ob Animationen wiedergegeben werden, wenn das Flyout geöffnet oder geschlossen wird, oder legt diesen fest.

(Geerbt von FlyoutBase)
Dispatcher

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

(Geerbt von DependencyObject)
ElementSoundMode

Ruft einen Wert ab, der die Einstellung des Steuerelements für die Wiedergabe von Sounds angibt, oder legt diesen fest.

(Geerbt von FlyoutBase)
InputDevicePrefersPrimaryCommands

Ruft einen Wert ab, der angibt, ob das Zum Öffnen des Flyouts verwendete Eingabegerät 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.

(Geerbt von FlyoutBase)
IsOpen

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

(Geerbt von FlyoutBase)
Items

Ruft die Auflistung ab, mit der der Inhalt des Menüs generiert wird.

LightDismissOverlayMode

Ruft einen Wert ab, der angibt, ob der Bereich außerhalb einer Benutzeroberfläche mit hellem Schließen abgedunkelt ist, oder legt diesen fest.

(Geerbt von FlyoutBase)
MenuFlyoutPresenterStyle

Ruft die Formatvorlage ab, die beim Rendern von MenuFlyout verwendet wird, oder legt diese fest.

MenuFlyoutPresenterStyleProperty

Identifiziert die MenuFlyoutPresenterStyle-Abhängigkeitseigenschaft .

OverlayInputPassThroughElement

Ruft ein Element ab, das Zeigereingabeereignisse empfangen soll, auch wenn es sich unterhalb der Überlagerung des Flyouts befindet, oder legt dieses fest.

(Geerbt von FlyoutBase)
Placement

Ruft die Standardplatzierung ab, die für das Flyout in Bezug auf das Platzierungsziel verwendet werden soll, oder legt diese fest.

(Geerbt von FlyoutBase)
ShouldConstrainToRootBounds

Ruft einen Wert ab, der angibt, ob das Flyout innerhalb der Grenzen des XAML-Stamms angezeigt werden soll, oder legt diesen fest.

(Geerbt von FlyoutBase)
ShowMode

Ruft einen Wert ab, der angibt, wie sich ein Flyout verhält, wenn es angezeigt wird, oder legt diesen fest.

(Geerbt von FlyoutBase)
Target

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

(Geerbt von FlyoutBase)
XamlRoot

Ruft die XamlRoot ab, in der dieses Flyout angezeigt wird, oder legt diese fest.

(Geerbt von FlyoutBase)

Methoden

ClearValue(DependencyProperty)

Löscht den lokalen Wert einer Abhängigkeitseigenschaft.

(Geerbt von DependencyObject)
CreatePresenter()

Initialisiert beim Überschreiben in einer abgeleiteten Klasse ein Steuerelement, um den Flyoutinhalt entsprechend dem abgeleiteten Steuerelement anzuzeigen. Hinweis: Diese Methode verfügt über keine Basisklassenimplementierung und muss in einer abgeleiteten Klasse überschrieben werden.

(Geerbt von FlyoutBase)
GetAnimationBaseValue(DependencyProperty)

Gibt einen beliebigen Basiswert zurück, der für eine Abhängigkeitseigenschaft eingerichtet wurde, der in Fällen gilt, 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 aufgerufen, kurz bevor eine Tastenkombination (Accelerator) in Ihrer App verarbeitet wird. Wird immer aufgerufen, wenn Anwendungscode oder interne Prozesse ProcessKeyboardAccelerators aufrufen. Überschreiben Sie diese Methode, um die Standardbeschleunigung zu beeinflussen.

(Geerbt von FlyoutBase)
ReadLocalValue(DependencyProperty)

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

(Geerbt von DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Registriert eine Benachrichtigungsfunktion zum Lauschen auf Änderungen an einer bestimmten DependencyProperty für dieses DependencyObject-instance.

(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 an, das unter Verwendung der angegebenen Optionen in Bezug auf das angegebene Element platziert wird.

(Geerbt von FlyoutBase)
ShowAt(FrameworkElement)

Zeigt das Flyout an, das in Bezug auf das angegebene Element platziert wird.

(Geerbt von FlyoutBase)
ShowAt(UIElement, Point)

Zeigt das Flyout an, das am 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

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