MenuFlyout Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
- 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.
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 |
| DispatcherQueue |
Ruft ab |
| 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) |