MenuFlyout Classe

Définition

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

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

Configuration requise pour Windows

Famille d’appareils
Windows 10 (introduit dans 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (introduit dans v1.0)

Exemples

Conseil

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

Si vous avez installé l’application WinUI 2 Gallery , cliquez ici pour ouvrir l’application et voir menuFlyout en action.

Cet exemple crée une classe MenuFlyout et utilise la propriété ContextFlyout, disponible pour la plupart des contrôles, pour afficher la classe MenuFlyout sous la forme d’un 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 qui suit est presque identique, mais au lieu d’utiliser la propriété ContextFlyout pour afficher la classe MenuFlyout sous forme de menu contextuel, l’exemple utilise la propriété FlyoutBase.ShowAttachedFlyout pour l’afficher sous forme de 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 des conditions changeantes 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

Conseil

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

Utilisez un contrôle Flyout 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 . Ce paramètre 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. Lorsqu’il est défini sur Button.Flyout, le MenuFlyout s’affiche lorsque le bouton est appuyé ou appelé.

Pour associer un MenuFlyout à d’autres contrôles, utilisez la propriété ContextFlyout disponible sur n’importe quel élément UIElement.

Remarques pour les versions précédentes

Notes

La propriété ContextFlyout n’est pas disponible avant la mise à jour anniversaire Windows 10 (SDK version 14393). Pour les versions antérieures, utilisez la propriété jointe FlyoutBase.AttachedFlyout .

Vous pouvez utiliser la propriété jointe FlyoutBase.AttachedFlyout pour associer un MenuFlyout à d’autres contrôles. 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.

Outre les membres répertoriés ci-dessus, il existe d’autres membres de la classe de base FlyoutBase qui sont souvent utilisés dans les scénarios MenuFlyout classiques :

Modèle et style de contrôle

Vous pouvez modifier le Style et le ControlTemplate par défaut 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 Contrôles de style. 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 disponible localement avec l’installation du sdk ou du package NuGet.

  • Styles WinUI (recommandés) : Pour connaître les styles mis à jour à partir de WinUI, consultez \Users\<username>\.nuget\packages\microsoft.ui.xaml\<version>\lib\uap10.0\Microsoft.UI.Xaml\Themes\generic.xaml.
  • Styles non WinUI : Pour les styles intégrés, consultez %ProgramFiles(x86)%\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP\<SDK version>\Generic\generic.xaml.

Les emplacements peuvent être différents si vous avez personnalisé l’installation. Les styles et les 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 préférable à la définition de propriétés telles que l’arrière-plan et le premier plan. Pour plus d’informations, consultez la section Styles légers de l’article Styles XAML . Les ressources de style légères sont disponibles à partir de Windows 10, version 1607 (SDK 14393).

Historique des versions

Version de Windows Version du SDK Valeur ajoutée
1809 17763 ShowAt

Constructeurs

MenuFlyout()

Initialise une nouvelle instance de la classe MenuFlyout.

Propriétés

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

Obtient le CoreDispatcher auquel cet objet est associé. CoreDispatcher représente une fonctionnalité qui peut accéder à DependencyObject sur le thread d’interface utilisateur, même si le code est initié par un thread autre que l’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 s’il lit des sons.

(Hérité de FlyoutBase)
InputDevicePrefersPrimaryCommands

Obtient une valeur qui indique si le périphérique 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.

(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 à l’extérieur d’une interface utilisateur d’assombrie 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 sous la superposition du menu volant.

(Hérité de FlyoutBase)
Placement

Obtient ou définit le placement 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)
Target

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

(Hérité de FlyoutBase)
XamlRoot

Obtient ou définit le XamlRoot dans lequel ce menu volant est consulté.

(Hérité de FlyoutBase)

Méthodes

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 approprié pour le contrôle dérivé. Remarque : Cette méthode n’a pas d’implémentation de classe de base et doit être remplacé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’appliquerait 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) ne soit traité dans votre application. Appelé chaque fois que du code d’application ou des processus internes appellent ProcessKeyboardAccelerators. Remplacez cette méthode pour influencer la gestion de l’accélérateur par défaut.

(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 à un DependencyProperty spécifique sur ce 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 précédemment inscrite en appelant RegisterPropertyChangedCallback.

(Hérité de DependencyObject)

Événements

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 est affiché.

(Hérité de FlyoutBase)
Opening

Se produit avant l’affichage du menu volant.

(Hérité de FlyoutBase)

S’applique à

Voir aussi