Afficher le menu déroulant à l'aide de BottomAppBar
-
26-12-2019 - |
Question
J'essaie d'afficher un simple Flyout (avec un contenu informatif) lorsqu'un AppBarToggleButton dans BottomAppBar est enfoncé, mais ma solution ne fonctionne pas.:(
Voici mon code :
<Page.BottomAppBar>
<CommandBar>
<AppBarToggleButton x:Uid="MapPageAppBarLegend" Label="" Icon="List">
<FlyoutBase.AttachedFlyout>
<Flyout>
<TextBlock Text="Informations here..."/>
</Flyout>
</FlyoutBase.AttachedFlyout>
</AppBarToggleButton>
</CommandBar>
</Page.BottomAppBar>
Rien n'apparaît..Quelqu'un peut-il m'aider à montrer cet affaissement ?Merci beaucoup et désolé pour ma langue anglaise.:)
Pamé
La solution
Tout est assez clairement décrit chez MSDN (il y a aussi un très bon exemple là-bas) :
Rien n'apparaît, car Icônes volantes s'ouvre automatiquement uniquement pour les boutons (et AppBarToggleButton ne dérive pas de Button
classe):
Un menu déroulant attaché à un bouton s'ouvre automatiquement lorsque l'utilisateur clique sur le bouton.Vous n'avez pas besoin de gérer d'événements pour ouvrir le menu déroulant.(Cela inclut les contrôles dérivés de Button, comme AppBarButton
Bien sûr, vous pouvez ajouter un Flyout
à n'importe qui FrameworkElement
mais vous devrez l'ouvrir manuellement :
Vous pouvez attacher un contrôle Flyout à n’importe quel objet FrameworkElement à l’aide de la propriété attachée FlyoutBase.AttachedFlyout.Si vous le faites, vous devez répondre à une interaction sur FrameworkElement, telle que l'événement Tapped, et ouvrir le Flyout dans votre code.
En XAML - définissez votre Flyout
dans Ressources et attachez-le au bouton :
<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>
Et événement dans le code derrière :
private void AppBarToggleButton_Click(object sender, RoutedEventArgs e)
{
FlyoutBase.ShowAttachedFlyout((FrameworkElement)sender);
}