Flyout mit BottomAppBar anzeigen
-
26-12-2019 - |
Frage
Ich versuche, ein einfaches Flyout (mit Informationsinhalt) anzuzeigen, wenn ein AppBarToggleButton in BottomAppBar gedrückt wird, aber meine Lösung funktioniert nicht.:(
Das ist mein 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>
Es erscheint nichts..Kann mir jemand helfen, dieses Flayout zu zeigen?Vielen Dank und Entschuldigung für meine englische Sprache.:) :)
Pame
Lösung
Alles ist ganz klar beschrieben bei MSDN (Dort gibt es auch ein sehr gutes Beispiel):
Nichts erscheint, weil Flyouts öffnet sich automatisch nur für Tasten (und AppBarToggleButton leitet sich nicht ab Button
Klasse):
Ein an eine Schaltfläche angehängtes Flyout wird automatisch geöffnet, wenn der Benutzer auf die Schaltfläche klickt.Sie müssen keine Ereignisse verarbeiten, um das Flyout zu öffnen.(Dazu gehören von Button abgeleitete Steuerelemente wie AppBarButton
Natürlich können Sie eine hinzufügen Flyout
zu irgendjemandem FrameworkElement
aber Sie müssen es manuell öffnen:
Sie können ein Flyout-Steuerelement an jedes FrameworkElement-Objekt anhängen, indem Sie die angefügte Eigenschaft FlyoutBase.AttachedFlyout verwenden.Wenn Sie dies tun, müssen Sie auf eine Interaktion am FrameworkElement reagieren, beispielsweise auf das Tapped-Ereignis, und das Flyout in Ihrem Code öffnen.
Definieren Sie in XAML Ihre Flyout
in Ressourcen und hängen Sie es an die Schaltfläche an:
<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>
Und Ereignis im Code dahinter:
private void AppBarToggleButton_Click(object sender, RoutedEventArgs e)
{
FlyoutBase.ShowAttachedFlyout((FrameworkElement)sender);
}