MenuFlyout Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
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
- Dérivé
- Attributs
Exemples
Conseil
Pour plus d’informations, des conseils de conception et des exemples de code, consultez Menus et menus contextuels.
L’application WinUI 3 Gallery comprend des exemples interactifs de la plupart des contrôles et des fonctionnalités WinUI 3. Procurez-vous l’application sur le Microsoft Store ou le code source sur GitHub.
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.
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 en tant que menu de contenu, utilisez la propriété ContextFlyout disponible sur n’importe quel élément UIElement.
Vous pouvez utiliser la propriété jointe FlyoutBase.AttachedFlyout pour associer un MenuFlyout à d’autres contrôles en tant que menu standard. 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.
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 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 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 .
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 |
Retourne |
DispatcherQueue |
Obtient le |
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. Cette propriété est toujours vraie 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 à 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) |
SystemBackdrop |
Obtient ou définit l’arrière-plan système à appliquer à ce menu volant. L’arrière-plan est affiché 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 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) |