Вопрос

Я пытаюсь показать простое всплывающее окно (с информационным содержимым), когда нажимается AppBarToggleButton в BottomAppBar, но мое решение не работает.:(

Это мой код:

<Page.BottomAppBar>
        <CommandBar>
            <AppBarToggleButton x:Uid="MapPageAppBarLegend" Label="" Icon="List">
                <FlyoutBase.AttachedFlyout>
                    <Flyout>
                        <TextBlock Text="Informations here..."/>
                    </Flyout>
                </FlyoutBase.AttachedFlyout>
            </AppBarToggleButton>
        </CommandBar>
</Page.BottomAppBar>

Ничего не появляется..Может ли кто-нибудь помочь мне показать этот макет?Большое спасибо и извините за мой английский.:)

Пейм

Это было полезно?

Решение

Все довольно четко описано в MSDN (там также есть очень хороший пример):

Ничего не появляется, потому что всплывающие окна открываться автоматически только для кнопок (и AppBarToggleButton не происходит от Button сорт):

Всплывающее меню, прикрепленное к кнопке, открывается автоматически, когда пользователь нажимает кнопку.Чтобы открыть всплывающее окно, вам не нужно обрабатывать какие-либо события.(Сюда входят элементы управления, производные от Button, например AppBarButton

Конечно, вы можете добавить Flyout любому FrameworkElement но вам придется открыть его вручную:

Вы можете прикрепить элемент управления Flyout к любому объекту FrameworkElement с помощью прикрепленного свойства FlyoutBase.AttachedFlyout.В этом случае вам придется отреагировать на взаимодействие с FrameworkElement, например на событие Tapped, и открыть всплывающее окно в своем коде.

В XAML — определите свой Flyout в Ресурсах и прикрепите его к кнопке:

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

И событие в коде позади:

private void AppBarToggleButton_Click(object sender, RoutedEventArgs e)
{
    FlyoutBase.ShowAttachedFlyout((FrameworkElement)sender);  
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top