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.
/// [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>
- Ereditarietà
- Derivato
- Attributi
Esempio
Tip
Per altre info, indicazioni sulla progettazione ed esempi di codice, vedi Menu e menu di scelta rapida.
L'app Raccolta WinUI 3 include esempi interattivi della maggior parte dei controlli e delle funzionalità di WinUI 3. Ottenere l'app dal Microsoft Store o ottenere il codice sorgente in GitHub.
In questo esempio viene creata una classe MenuFlyout e viene utilizzata la proprietà ContextFlyout , una proprietà disponibile per la maggior parte dei controlli, per visualizzare la classe MenuFlyout come 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 seguente è quasi identico, ma invece di usare la proprietà ContextFlyout per visualizzare la classe MenuFlyout come menu di scelta rapida, nell'esempio viene utilizzata la proprietà FlyoutBase.ShowAttachedFlyout per visualizzarla come 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
Tip
Per altre info, indicazioni sulla 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 singole voci 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 menu MenuFlyout ad altri controlli come menu di contenuto, usare la proprietà ContextFlyout disponibile in qualsiasi UIElement.
È possibile utilizzare la proprietà associata FlyoutBase.AttachedFlyout per associare menuFlyout ad altri controlli come menu normale. Quando un oggetto MenuFlyout viene assegnato ad altri elementi dell'interfaccia utente tramite FlyoutBase.AttachedFlyout, è necessario chiamare il metodo ShowAt o il metodo Statico ShowAttachedFlyout per visualizzare il riquadro a comparsa.
Stile e modello di controllo
È 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, vedi Stili XAML. Lo stile predefinito, il modello e le risorse che definiscono l'aspetto del controllo vengono inclusi nel generic.xaml file. Ai fini della progettazione, generic.xaml viene installato con il pacchetto NuGet SDK per app di Windows. Per impostazione predefinita, il percorso è \Users\<username>\.nuget\packages\microsoft.windowsappsdk\<version>\lib\uap10.0\Microsoft.UI\Themes\generic.xaml. 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 .
Costruttori
| Nome | Descrizione |
|---|---|
| MenuFlyout() |
Inizializza una nuova istanza della classe MenuFlyout . |
Proprietà
| Nome | Descrizione |
|---|---|
| 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 |
Restituisce |
| DispatcherQueue |
Ottiene l'oggetto |
| 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. Questa proprietà è sempre true per le app SDK per app di Windows. (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 chiara 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 entro i 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) |
| SystemBackdrop |
Ottiene o imposta lo sfondo del sistema da applicare a questo riquadro a comparsa. Il rendering dello sfondo viene eseguito dietro il contenuto del riquadro a comparsa. (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
| Nome | Descrizione |
|---|---|
| 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 a una dipendenza specifica in questa istanza dependencyObject . (Ereditato da DependencyObject) |
| SetValue(DependencyProperty, Object) |
Imposta il valore locale di una proprietà di dipendenza in un Oggetto 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 rispetto all'elemento di destinazione specificato. |
| TryInvokeKeyboardAccelerator(ProcessKeyboardAcceleratorEventArgs) |
Tenta di richiamare un tasto di scelta rapida (acceleratore). (Ereditato da FlyoutBase) |
| UnregisterPropertyChangedCallback(DependencyProperty, Int64) |
Annulla una notifica di modifica registrata in precedenza chiamando RegisterPropertyChangedCallback. (Ereditato da DependencyObject) |
Eventi
| Nome | Descrizione |
|---|---|
| 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) |