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.
/// [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
- 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.
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:
- FlyoutBase.AttachedFlyout: Eine angefügte Eigenschaft, die ein MenuFlyout einem bestimmten UI-Element zuordnet (dies kann eine beliebige von FrameworkElement abgeleitete Klasse sein).
- ShowAttachedFlyout: Eine statische Methode, die bestimmen kann, ob ein Flyout bereits einem UI-Element über eine FlyoutBase.AttachedFlyout-Verwendung zugeordnet ist. Wenn dies der Grund ist, ruft die Methode ShowAt intern auf, wobei das von Ihnen angegebene FrameworkElement verwendet wird .
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) |