Как сделать, чтобы всплывающее окно не мешало нажимать что-либо еще

Я работаю над проектом UWP в C# и xaml.

Когда вы щелкаете вне выпадающего меню, всплывающее окно закрывается, но оно также предотвращает нажатие на что-либо еще.

Есть ли способ заставить всплывающее окно не глотать событие нажатия / нажатия указателя? Так что, например, нажатие кнопки при открытой всплывающей подсказке приведет к ее закрытию и выполнению нажатия кнопки.

Я попытался создать производный всплывающий класс с намерением переопределить функцию OnPointerPressed (как вы можете для кнопки), чтобы я мог установить флаг Handled на false, но, похоже, у него нет функции OnPointerPressed или чего-либо подобного,

1 ответ

Решение

Как сделать, чтобы всплывающее окно не мешало нажимать что-либо еще

Производное от Света отклоняет поведение. Вы можете изменить это поведение, назначив кнопку в качестве входного сквозного элемента для всплывающей подсказки.

Всплывающее окно закроется в результате действий по отключению света, описанных выше, а также передаст событие касания своему назначенному OverlayInputPassThroughElement. Рассмотрите возможность применения этого поведения для ускорения взаимодействия пользователей с функционально схожими элементами. Если у вашего приложения есть коллекция избранных, и каждый элемент в коллекции содержит прикрепленную всплывающую подсказку, разумно ожидать, что пользователи могут захотеть взаимодействовать с несколькими всплывающими подсказками в быстрой последовательности.

<Page.Resources>
    <Flyout x:Name="TravelFlyout" x:Key="TravelFlyout"
            OverlayInputPassThroughElement="{x:Bind FavoritesBar}">
        <StackPanel>
            <HyperlinkButton Content="Washington Trails Association"/>
            <HyperlinkButton Content="Washington Cascades - Go Northwest! A Travel Guide"/>
        </StackPanel>
    </Flyout>
</Page.Resources>

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <StackPanel x:Name="FavoritesBar" Orientation="Horizontal">
        <HyperlinkButton x:Name="PageLinkBtn">Bing</HyperlinkButton>
        <Button x:Name="Folder1" Content="Travel" Flyout="{StaticResource TravelFlyout}"/>
        <Button x:Name="Folder2" Content="Entertainment" Click="Folder2_Click"/>
    </StackPanel>
</Grid>
Другие вопросы по тегам