Condividi tramite


MenuFlyout Classe

Definizione

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à
Object IInspectable DependencyObject FlyoutBase MenuFlyout
Derivato
Attributi

Esempio

Suggerimento

Per altre informazioni, indicazioni sulla progettazione e esempi di codice, vedere Menu e menu di scelta rapida.

L'app WinUI 3 Gallery include esempi interattivi della maggior parte dei controlli, delle funzionalità e delle funzionalità winUI 3. Ottenere l'app da Microsoft Store o ottenere il codice sorgente in GitHub.

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;
    }
}

In questo esempio viene illustrato 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 informazioni, indicazioni sulla progettazione e esempi di codice, vedere Menu e menu di scelta rapida.

MenuFlyout visualizza temporaneamente un elenco di comandi o opzioni correlate a ciò che l'utente sta attualmente eseguendo.

Controllo menu a comparsa

Usare un controllo Riquadro a comparsa per visualizzare singole voci e un controllo MenuFlyout per visualizzare un menu di voci. Per altre informazioni, vedere Menu e menu di scelta rapida.

Un controllo MenuFlyout può essere usato come valore della proprietà Button.Flyout . Questo valore viene in genere impostato in XAML come parte di una definizione dell'interfaccia utente della pagina. Button è l'unico controllo con una proprietà Flyout dedicata. Se impostato come Button.Flyout, menuFlyout viene visualizzato quando il pulsante viene toccato o richiamato in caso contrario.

Per associare menuFlyout ad altri controlli come menu di contenuto, usare la proprietà ContextFlyout disponibile in qualsiasi UIElement.

È possibile usare la proprietà associata FlyoutBase.AttachedFlyout per associare un MenuFlyout ad altri controlli come menu normale. Quando un menuFlyout viene assegnato ad altri elementi dell'interfaccia utente usando FlyoutBase.AttachedFlyout, è necessario chiamare il metodo ShowAt o il metodo ShowAttachedFlyout statico 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, vedere Stili XAML. Lo stile predefinito, il modello e le risorse che definiscono l'aspetto del controllo sono inclusi nel generic.xaml file. A scopo di 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 provenienti da versioni diverse dell'SDK potrebbero avere valori diversi.

XAML include anche risorse che è possibile usare per modificare i colori di un controllo in diversi stati visivi senza modificare il modello di controllo. La modifica di queste risorse è preferibile impostare le proprietà, ad esempio Background e Foreground. Per altre informazioni, vedere la sezione Stile a peso leggero dell'articolo stili XAML .

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

Restituisce null sempre in un'app SDK per app di Windows. Usare invece DispatcherQueue .

(Ereditato da DependencyObject)
DispatcherQueue

Ottiene l'oggetto DispatcherQueue associato. Rappresenta DispatcherQueue una struttura che può accedere al thread dell'interfaccia utente anche se il codice viene avviato da un thread non dell'interfaccia DependencyObject 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 usato 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 di 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 usata 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 durante il rendering del menuFlyout.

MenuFlyoutPresenterStyleProperty

Identifica la proprietà di dipendenza MenuFlyoutPresenterStyle .

OverlayInputPassThroughElement

Ottiene o imposta un elemento che deve ricevere eventi di input del puntatore anche quando sotto la sovrapposizione del riquadro a comparsa.

(Ereditato da FlyoutBase)
Placement

Ottiene o imposta il posizionamento predefinito da usare 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 visualizzato.

(Ereditato da FlyoutBase)
SystemBackdrop

Ottiene o imposta lo sfondo del sistema da applicare a questo riquadro a comparsa. Lo sfondo viene eseguito il rendering dietro il contenuto del riquadro a comparsa.

(Ereditato da FlyoutBase)
Target

Ottiene l'elemento da usare come destinazione di posizionamento del riquadro a comparsa.

(Ereditato da FlyoutBase)
XamlRoot

Ottiene o imposta 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 sottoposto a 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 alcuna 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 un oggetto DependencyObject.

(Ereditato da DependencyObject)
Hide()

Chiude il riquadro a comparsa.

(Ereditato da FlyoutBase)
OnProcessKeyboardAccelerators(ProcessKeyboardAcceleratorEventArgs)

Chiamato appena prima che venga elaborata una scelta rapida da tastiera (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 viene impostato un valore locale.

(Ereditato da DependencyObject)
RegisterPropertyChangedCallback(DependencyProperty, DependencyPropertyChangedCallback)

Registra una funzione di notifica per l'ascolto delle modifiche a un'istanza di DependencyObject specifica.

(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 usando 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 all'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)

Si applica a

Vedi anche