MenuFlyout Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Rappresenta un riquadro a comparsa che visualizza un menu di comandi.
/// [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>
- Ereditarietà
- Derivato
- Attributi
Requisiti Windows
Famiglia di dispositivi |
Windows 10 (è stato introdotto in 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (è stato introdotto in v1.0)
|
Esempio
Suggerimento
Per altre info, linee guida per la progettazione ed esempi di codice, vedi Menu e menu di scelta rapida.
Se è installata l'app WinUI 2 Gallery , fai clic qui per aprire l'app e vedere MenuFlyout in azione.
Questo esempio crea una classe MenuFlyout e usa la proprietà ContextFlyout, una proprietà disponibile per la maggior parte dei controlli, per mostrare la classe MenuFlyout come un menu di scelta rapida.
<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'esempio successivo è quasi identico, ma invece di usare la proprietà ContextFlyout per mostrare la classe MenuFlyout come menu di scelta rapida, l'esempio usa la proprietà FlyoutBase.ShowAttachedFlyout per mostrare un 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;
}
}
Questo esempio mostra come aggiungere e rimuovere voci di menu in fase di esecuzione in base alla modifica delle condizioni nell'app.
<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);
}
}
Commenti
Suggerimento
Per altre info, linee guida per la progettazione ed esempi di codice, vedi Menu e menu di scelta rapida.
MenuFlyout visualizza temporaneamente un elenco di comandi o opzioni correlati a ciò che l'utente sta attualmente eseguendo.
Usa un controllo Riquadro a comparsa per visualizzare singoli elementi e un controllo MenuFlyout per visualizzare un menu di voci. Per altre info, vedi Menu e menu di scelta rapida.
Un controllo MenuFlyout può essere utilizzato come valore della proprietà Button.Flyout . Questa impostazione viene in genere impostata in XAML come parte di una definizione dell'interfaccia utente della pagina. Button è l'unico controllo con una proprietà Flyout dedicata. Se impostato su Button.Flyout, MenuFlyout viene visualizzato quando il pulsante viene toccato o richiamato in altro modo.
Per associare un oggetto MenuFlyout ad altri controlli, utilizzare la proprietà ContextFlyout disponibile in qualsiasi UIElement.
Note per le versioni precedenti
Nota
La proprietà ContextFlyout non è disponibile prima dell'aggiornamento dell'anniversario di Windows 10 (SDK versione 14393). Per le versioni precedenti, usare la proprietà associata FlyoutBase.AttachedFlyout .
È possibile utilizzare la proprietà associata FlyoutBase.AttachedFlyout per associare menuFlyout ad altri controlli. Quando un oggetto MenuFlyout viene assegnato ad altri elementi dell'interfaccia utente usando FlyoutBase.AttachedFlyout, devi chiamare il metodo ShowAt o il metodo Statico ShowAttachedFlyout per visualizzare il riquadro a comparsa.
Oltre ai membri elencati in precedenza, esistono altri membri della classe base FlyoutBase che vengono spesso usati negli scenari tipici di MenuFlyout:
- FlyoutBase.AttachedFlyout: una proprietà associata che associa un Oggetto MenuFlyout a un particolare elemento dell'interfaccia utente (può trattarsi di qualsiasi classe derivata di FrameworkElement ).
- ShowAttachedFlyout: metodo statico che consente di determinare se un riquadro a comparsa è già associato a un elemento dell'interfaccia utente tramite un utilizzo flyoutBase.AttachedFlyout . In tal caso, il metodo chiama internamente ShowAt , usando frameworkElement specificato.
Stile di controllo e modello
È possibile modificare lo stile predefinito e controlTemplate per assegnare al controllo un aspetto univoco. Per informazioni sulla modifica dello stile e del modello di un controllo, vedere Applicazione di stili ai controlli. Lo stile predefinito, il modello e le risorse che definiscono l'aspetto del controllo sono inclusi nel generic.xaml
file. Ai fini della progettazione, generic.xaml
è disponibile in locale con l'installazione dell'SDK o del pacchetto NuGet.
-
Stili WinUI (scelta consigliata): Per gli stili aggiornati da WinUI, vedere
\Users\<username>\.nuget\packages\microsoft.ui.xaml\<version>\lib\uap10.0\Microsoft.UI.Xaml\Themes\generic.xaml
. -
Stili non WinUI: Per gli stili predefiniti, vedere
%ProgramFiles(x86)%\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP\<SDK version>\Generic\generic.xaml
.
I percorsi potrebbero essere diversi se l'installazione è stata personalizzata. Gli stili e le risorse di versioni diverse dell'SDK potrebbero avere valori diversi.
XAML include anche risorse che è possibile usare per modificare i colori di un controllo in stati di visualizzazione diversi senza modificare il modello di controllo. La modifica di queste risorse è preferibile per impostare proprietà come Background e Foreground. Per altre info, vedi la sezione Stili leggeri dell'articolo Stili XAML . Le risorse di stili leggeri sono disponibili a partire da Windows 10 versione 1607 (SDK 14393).
Cronologia delle versioni
Versione di Windows | Versione dell'SDK | Valore aggiunto |
---|---|---|
1809 | 17763 | ShowAt |
Costruttori
MenuFlyout() |
Inizializza una nuova istanza della classe MenuFlyout . |
Proprietà
AllowFocusOnInteraction |
Ottiene o imposta un valore che indica se l'elemento ottiene automaticamente lo stato attivo quando l'utente interagisce con esso. (Ereditato da FlyoutBase) |
AllowFocusWhenDisabled |
Ottiene o imposta un valore che specifica se il controllo può ricevere lo stato attivo quando è disabilitato. (Ereditato da FlyoutBase) |
AreOpenCloseAnimationsEnabled |
Ottiene o imposta un valore che indica se le animazioni vengono riprodotte quando il riquadro a comparsa viene aperto o chiuso. (Ereditato da FlyoutBase) |
Dispatcher |
Ottiene coreDispatcher a cui è associato questo oggetto. CoreDispatcher rappresenta una funzionalità che può accedere a DependencyObject nel thread dell'interfaccia utente anche se il codice viene avviato da un thread non dell'interfaccia utente. (Ereditato da DependencyObject) |
ElementSoundMode |
Ottiene o imposta un valore che specifica la preferenza del controllo per la riproduzione di suoni. (Ereditato da FlyoutBase) |
InputDevicePrefersPrimaryCommands |
Ottiene un valore che indica se il dispositivo di input utilizzato per aprire il riquadro a comparsa non apre facilmente i comandi secondari. (Ereditato da FlyoutBase) |
IsConstrainedToRootBounds |
Ottiene un valore che indica se il riquadro a comparsa viene visualizzato all'interno dei limiti della radice XAML. (Ereditato da FlyoutBase) |
IsOpen |
Ottiene un valore che indica se il riquadro a comparsa è aperto. (Ereditato da FlyoutBase) |
Items |
Ottiene la raccolta utilizzata per generare il contenuto del menu. |
LightDismissOverlayMode |
Ottiene o imposta un valore che specifica se l'area esterna a un'interfaccia utente di chiusura della luce viene oscurata. (Ereditato da FlyoutBase) |
MenuFlyoutPresenterStyle |
Ottiene o imposta lo stile utilizzato per il rendering di MenuFlyout. |
MenuFlyoutPresenterStyleProperty |
Identifica la proprietà di dipendenza MenuFlyoutPresenterStyle . |
OverlayInputPassThroughElement |
Ottiene o imposta un elemento che deve ricevere eventi di input del puntatore anche quando si trova sotto la sovrimpressione del riquadro a comparsa. (Ereditato da FlyoutBase) |
Placement |
Ottiene o imposta il posizionamento predefinito da utilizzare per il riquadro a comparsa, in relazione alla destinazione di posizionamento. (Ereditato da FlyoutBase) |
ShouldConstrainToRootBounds |
Ottiene o imposta un valore che indica se il riquadro a comparsa deve essere visualizzato all'interno dei limiti della radice XAML. (Ereditato da FlyoutBase) |
ShowMode |
Ottiene o imposta un valore che indica il comportamento di un riquadro a comparsa quando viene visualizzato. (Ereditato da FlyoutBase) |
Target |
Ottiene l'elemento da utilizzare come destinazione di posizionamento del riquadro a comparsa. (Ereditato da FlyoutBase) |
XamlRoot |
Ottiene o imposta l'oggetto XamlRoot in cui viene visualizzato questo riquadro a comparsa. (Ereditato da FlyoutBase) |
Metodi
ClearValue(DependencyProperty) |
Cancella il valore locale di una proprietà di dipendenza. (Ereditato da DependencyObject) |
CreatePresenter() |
Quando ne viene eseguito l'override in una classe derivata, inizializza un controllo per visualizzare il contenuto del riquadro a comparsa come appropriato per il controllo derivato. Nota: questo metodo non ha implementazione della classe di base e deve essere sottoposto a override in una classe derivata. (Ereditato da FlyoutBase) |
GetAnimationBaseValue(DependencyProperty) |
Restituisce qualsiasi valore di base stabilito per una proprietà di dipendenza, che si applica nei casi in cui un'animazione non è attiva. (Ereditato da DependencyObject) |
GetValue(DependencyProperty) |
Restituisce il valore effettivo corrente di una proprietà di dipendenza da dependencyObject. (Ereditato da DependencyObject) |
Hide() |
Chiude il riquadro a comparsa. (Ereditato da FlyoutBase) |
OnProcessKeyboardAccelerators(ProcessKeyboardAcceleratorEventArgs) |
Chiamato subito prima dell'elaborazione di un tasto di scelta rapida (acceleratore) nell'app. Richiamato ogni volta che il codice dell'applicazione o i processi interni chiamano ProcessKeyboardAccelerators. Eseguire l'override di questo metodo per influenzare la gestione dell'acceleratore predefinita. (Ereditato da FlyoutBase) |
ReadLocalValue(DependencyProperty) |
Restituisce il valore locale di una proprietà di dipendenza, se è impostato un valore locale. (Ereditato da DependencyObject) |
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback) |
Registra una funzione di notifica per l'ascolto delle modifiche apportate a una dipendenza specifica in questa istanza di DependencyObject . (Ereditato da DependencyObject) |
SetValue(DependencyProperty, Object) |
Imposta il valore locale di una proprietà di dipendenza su dependencyObject. (Ereditato da DependencyObject) |
ShowAt(DependencyObject, FlyoutShowOptions) |
Mostra il riquadro a comparsa posizionato in relazione all'elemento specificato utilizzando le opzioni specificate. (Ereditato da FlyoutBase) |
ShowAt(FrameworkElement) |
Mostra il riquadro a comparsa posizionato in relazione all'elemento specificato. (Ereditato da FlyoutBase) |
ShowAt(UIElement, Point) |
Mostra il riquadro a comparsa posizionato in corrispondenza dell'offset specificato in relazione all'elemento di destinazione specificato. |
TryInvokeKeyboardAccelerator(ProcessKeyboardAcceleratorEventArgs) |
Tenta di richiamare una scelta rapida da tastiera (acceleratore). (Ereditato da FlyoutBase) |
UnregisterPropertyChangedCallback(DependencyProperty, Int64) |
Annulla una notifica di modifica registrata in precedenza chiamando RegisterPropertyChangedCallback. (Ereditato da DependencyObject) |
Eventi
Closed |
Si verifica quando il riquadro a comparsa è nascosto. (Ereditato da FlyoutBase) |
Closing |
Si verifica quando il riquadro a comparsa inizia a essere nascosto. (Ereditato da FlyoutBase) |
Opened |
Si verifica quando viene visualizzato il riquadro a comparsa. (Ereditato da FlyoutBase) |
Opening |
Si verifica prima che venga visualizzato il riquadro a comparsa. (Ereditato da FlyoutBase) |