Langage

MenuFlyout Classe

Définition

Représente un menu volant qui affiche un menu de commandes.

/// [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>
Héritage
Object IInspectable DependencyObject FlyoutBase MenuFlyout
Dérivé
Attributs

Exemples

Tip

Pour plus d’informations, des conseils de conception et des exemples de code, consultez Menus et menus contextuels.

L’application WinUI 3 Gallery inclut des exemples interactifs de la plupart des contrôles, des caractéristiques et des fonctionnalités de WinUI 3. Obtenez l’application à partir du Microsoft Store ou obtenez le code source sur GitHub.

Cet exemple crée une classe MenuFlyout et utilise la propriété ContextFlyout , une propriété disponible pour la plupart des contrôles, pour afficher la classe MenuFlyout en tant que menu contextuel.

<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;
    }
}

L’exemple suivant est presque identique, mais au lieu d’utiliser la propriété ContextFlyout pour afficher la classe MenuFlyout en tant que menu contextuel, l’exemple utilise la propriété FlyoutBase.ShowAttachedFlyout pour l’afficher en tant que menu.

<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;
    }
}

Cet exemple montre comment ajouter et supprimer des éléments de menu au moment de l’exécution en fonction de la modification des conditions dans votre application.

<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);
    }
}

Remarques

Tip

Pour plus d’informations, des conseils de conception et des exemples de code, consultez Menus et menus contextuels.

MenuFlyout affiche temporairement une liste de commandes ou d’options liées à ce que l’utilisateur fait actuellement.

Contrôle de menu volant de menu

Utilisez un contrôle Volant pour afficher des éléments uniques et un contrôle MenuFlyout pour afficher un menu d’éléments. Pour plus d’informations, consultez Menus et menus contextuels.

Un contrôle MenuFlyout peut être utilisé comme valeur de la propriété Button.Flyout . Cela est généralement défini en XAML dans le cadre d’une définition d’interface utilisateur de la page. Button est le seul contrôle qui a une propriété flyout dédiée. Lorsque la valeur est Button.Flyout, menuFlyout s’affiche lorsque le bouton est appuyé ou appelé.

Pour associer un MenuFlyout à d’autres contrôles en tant que menu de contenu, utilisez la propriété ContextFlyout disponible sur n’importe quel uiElement.

Vous pouvez utiliser la propriété jointe FlyoutBase.AttachedFlyout pour associer un MenuFlyout à d’autres contrôles en tant que menu normal. Lorsqu’un MenuFlyout est affecté à d’autres éléments d’interface utilisateur à l’aide de FlyoutBase.AttachedFlyout, vous devez appeler la méthode ShowAt ou la méthode Statique ShowAttachedFlyout pour afficher le menu volant.

Style de contrôle et modèle

Vous pouvez modifier le style par défaut et ControlTemplate pour donner au contrôle une apparence unique. Pour plus d’informations sur la modification du style et du modèle d’un contrôle, consultez les styles XAML. Le style, le modèle et les ressources par défaut qui définissent l’apparence du contrôle sont inclus dans le generic.xaml fichier. À des fins de conception, generic.xaml est installé avec le package NuGet SDK d'application Windows. Par défaut, l'emplacement est \Users\<username>\.nuget\packages\microsoft.windowsappsdk\<version>\lib\uap10.0\Microsoft.UI\Themes\generic.xaml. Les styles et ressources de différentes versions du Kit de développement logiciel (SDK) peuvent avoir des valeurs différentes.

XAML inclut également des ressources que vous pouvez utiliser pour modifier les couleurs d’un contrôle dans différents états visuels sans modifier le modèle de contrôle. La modification de ces ressources est recommandée pour définir des propriétés telles que l’arrière-plan et le premier plan. Pour plus d’informations, consultez la section style léger de l’article styles XAML .

Constructeurs

Nom Description
MenuFlyout()

Initialise une nouvelle instance de la classe MenuFlyout .

Propriétés

Nom Description
AllowFocusOnInteraction

Obtient ou définit une valeur qui indique si l’élément obtient automatiquement le focus lorsque l’utilisateur interagit avec lui.

(Hérité de FlyoutBase)
AllowFocusWhenDisabled

Obtient ou définit une valeur qui spécifie si le contrôle peut recevoir le focus lorsqu’il est désactivé.

(Hérité de FlyoutBase)
AreOpenCloseAnimationsEnabled

Obtient ou définit une valeur qui indique si les animations sont lues lorsque le menu volant est ouvert ou fermé.

(Hérité de FlyoutBase)
Dispatcher

Retourne null toujours dans une application du Kit de développement logiciel (SDK) d’application Windows. Utilisez DispatcherQueue à la place.

(Hérité de DependencyObject)
DispatcherQueue

Obtient le DispatcherQueue résultat auquel cet objet est associé. Représente DispatcherQueue une installation qui peut accéder au DependencyObject thread d’interface utilisateur même si le code est initié par un thread non-interface utilisateur.

(Hérité de DependencyObject)
ElementSoundMode

Obtient ou définit une valeur qui spécifie la préférence du contrôle pour savoir si elle lit des sons.

(Hérité de FlyoutBase)
InputDevicePrefersPrimaryCommands

Obtient une valeur qui indique si l’appareil d’entrée utilisé pour ouvrir le menu volant n’ouvre pas facilement les commandes secondaires.

(Hérité de FlyoutBase)
IsConstrainedToRootBounds

Obtient une valeur qui indique si le menu volant est affiché dans les limites de la racine XAML. Cette propriété est toujours true pour les applications SDK d'application Windows.

(Hérité de FlyoutBase)
IsOpen

Obtient une valeur qui indique si le menu volant est ouvert.

(Hérité de FlyoutBase)
Items

Obtient la collection utilisée pour générer le contenu du menu.

LightDismissOverlayMode

Obtient ou définit une valeur qui spécifie si la zone en dehors d’une interface utilisateur d’abandon clair est assombrie.

(Hérité de FlyoutBase)
MenuFlyoutPresenterStyle

Obtient ou définit le style utilisé lors du rendu du menuFlyout.

MenuFlyoutPresenterStyleProperty

Identifie la propriété de dépendance MenuFlyoutPresenterStyle .

OverlayInputPassThroughElement

Obtient ou définit un élément qui doit recevoir des événements d’entrée de pointeur même en dessous de la superposition du menu volant.

(Hérité de FlyoutBase)
Placement

Obtient ou définit l’emplacement par défaut à utiliser pour le menu volant, par rapport à sa cible de placement.

(Hérité de FlyoutBase)
ShouldConstrainToRootBounds

Obtient ou définit une valeur qui indique si le menu volant doit être affiché dans les limites de la racine XAML.

(Hérité de FlyoutBase)
ShowMode

Obtient ou définit une valeur qui indique le comportement d’un menu volant lorsqu’il est affiché.

(Hérité de FlyoutBase)
SystemBackdrop

Obtient ou définit la toile de fond du système à appliquer à ce menu volant. La toile de fond est affichée derrière le contenu du menu volant.

(Hérité de FlyoutBase)
Target

Obtient l’élément à utiliser comme cible de placement du menu volant.

(Hérité de FlyoutBase)
XamlRoot

Obtient ou définit le code XamlRoot dans lequel ce menu volant est en cours d’affichage.

(Hérité de FlyoutBase)

Méthodes

Nom Description
ClearValue(DependencyProperty)

Efface la valeur locale d’une propriété de dépendance.

(Hérité de DependencyObject)
CreatePresenter()

En cas de substitution dans une classe dérivée, initialise un contrôle pour afficher le contenu du menu volant en fonction du contrôle dérivé. Remarque : cette méthode n’a pas d’implémentation de classe de base et doit être substituée dans une classe dérivée.

(Hérité de FlyoutBase)
GetAnimationBaseValue(DependencyProperty)

Retourne toute valeur de base établie pour une propriété de dépendance, qui s’applique dans les cas où une animation n’est pas active.

(Hérité de DependencyObject)
GetValue(DependencyProperty)

Retourne la valeur effective actuelle d’une propriété de dépendance à partir d’un DependencyObject.

(Hérité de DependencyObject)
Hide()

Ferme le menu volant.

(Hérité de FlyoutBase)
OnProcessKeyboardAccelerators(ProcessKeyboardAcceleratorEventArgs)

Appelé juste avant qu’un raccourci clavier (accélérateur) soit traité dans votre application. Appelé chaque fois que le code de l’application ou les processus internes appellent ProcessKeyboardAccelerators. Remplacez cette méthode pour influencer la gestion par défaut de l’accélérateur.

(Hérité de FlyoutBase)
ReadLocalValue(DependencyProperty)

Retourne la valeur locale d’une propriété de dépendance, si une valeur locale est définie.

(Hérité de DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Inscrit une fonction de notification pour écouter les modifications apportées à une dependencyProperty spécifique sur cette instance DependencyObject .

(Hérité de DependencyObject)
SetValue(DependencyProperty, Object)

Définit la valeur locale d’une propriété de dépendance sur un DependencyObject.

(Hérité de DependencyObject)
ShowAt(DependencyObject, FlyoutShowOptions)

Affiche le menu volant placé par rapport à l’élément spécifié à l’aide des options spécifiées.

(Hérité de FlyoutBase)
ShowAt(FrameworkElement)

Affiche le menu volant placé par rapport à l’élément spécifié.

(Hérité de FlyoutBase)
ShowAt(UIElement, Point)

Affiche le menu volant placé au décalage spécifié par rapport à l’élément cible spécifié.

TryInvokeKeyboardAccelerator(ProcessKeyboardAcceleratorEventArgs)

Tente d’appeler un raccourci clavier (accélérateur).

(Hérité de FlyoutBase)
UnregisterPropertyChangedCallback(DependencyProperty, Int64)

Annule une notification de modification qui a été précédemment inscrite en appelant RegisterPropertyChangedCallback.

(Hérité de DependencyObject)

Événements

Nom Description
Closed

Se produit lorsque le menu volant est masqué.

(Hérité de FlyoutBase)
Closing

Se produit lorsque le menu volant commence à être masqué.

(Hérité de FlyoutBase)
Opened

Se produit lorsque le menu volant s’affiche.

(Hérité de FlyoutBase)
Opening

Se produit avant l’affichage du menu volant.

(Hérité de FlyoutBase)

S’applique à

Voir aussi