Mostra il riquadro a comparsa utilizzando BottomAppBar
-
26-12-2019 - |
Domanda
Sto cercando di mostrare un semplice riquadro a comparsa (con contenuto informativo) quando viene premuto un AppBarToggleButton all'interno di BottomAppBar, ma la mia soluzione non funziona.:(
Questo è il mio codice:
<Page.BottomAppBar>
<CommandBar>
<AppBarToggleButton x:Uid="MapPageAppBarLegend" Label="" Icon="List">
<FlyoutBase.AttachedFlyout>
<Flyout>
<TextBlock Text="Informations here..."/>
</Flyout>
</FlyoutBase.AttachedFlyout>
</AppBarToggleButton>
</CommandBar>
</Page.BottomAppBar>
Non appare nulla..Qualcuno può aiutarmi a mostrare questo flagello?Grazie mille e scusa per la mia lingua inglese.:)
Pamé
Soluzione
Tutto è descritto abbastanza chiaramente presso MSDN (c'è anche un ottimo esempio lì):
Non appare nulla, perché Flyout si apre automaticamente solo per i pulsanti (e AppBarToggleButton non deriva da Button
classe):
Un riquadro a comparsa associato a un pulsante si apre automaticamente quando l'utente fa clic sul pulsante.Non è necessario gestire alcun evento per aprire il riquadro a comparsa.(Sono inclusi i controlli derivati da Button, come AppBarButton
Ovviamente puoi aggiungere a Flyout
a qualsiasi FrameworkElement
ma dovrai aprirlo manualmente:
È possibile allegare un controllo Flyout a qualsiasi oggetto FrameworkElement utilizzando la proprietà associata FlyoutBase.AttachedFlyout.In tal caso, devi rispondere a un'interazione su FrameworkElement, ad esempio l'evento Tapped, e aprire il riquadro a comparsa nel codice.
In XAML: definisci il tuo Flyout
in Risorse e allegarlo al pulsante:
<Page.Resources>
<Flyout x:Key="myFlyout" Placement="Top">
<TextBlock Text="Informations here..."/>
</Flyout>
</Page.Resources>
<Page.BottomAppBar>
<CommandBar>
<AppBarToggleButton x:Uid="MapPageAppBarLegend" Label="First" Icon="List"
FlyoutBase.AttachedFlyout="{StaticResource myFlyout}"
Click="AppBarToggleButton_Click"/>
</CommandBar>
</Page.BottomAppBar>
Ed evento nel codice dietro:
private void AppBarToggleButton_Click(object sender, RoutedEventArgs e)
{
FlyoutBase.ShowAttachedFlyout((FrameworkElement)sender);
}