【问题标题】:How to make a flyout not prevent clicking anything else如何使弹出窗口不阻止单击其他任何内容
【发布时间】:2019-03-23 05:25:48
【问题描述】:

我正在使用 c# 和 xaml 开发一个 UWP 项目。

当您点击浮出控件外部时,浮出控件会关闭,但它也会阻止点击其他任何内容。

有没有办法让浮出控件不吞噬点击/指针按下事件? 因此,例如,在弹出按钮打开时单击按钮将关闭弹出按钮并执行按钮单击。

我尝试创建一个派生的弹出类,目的是覆盖 OnPointerPressed 函数(就像你可以为按钮一样),所以我可以将 Handled 标志设置为 false,但它似乎没有 OnPointerPressed 函数或任何类似的东西。

【问题讨论】:

    标签: xaml uwp flyout


    【解决方案1】:

    如何使弹出窗口不阻止点击其他任何内容

    派生自Light dismiss behavior。您可以通过将按钮指定为浮出控件的输入传递元素来更改此行为。

    浮出控件将因上述轻关闭操作而关闭,并且还将点击事件传递给其指定的 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>
    

    【讨论】:

    • 这行得通,但我希望一切都能得到这个事件。我会分配最高控制权,但我无权访问它。有没有办法做到这一点?
    • 分配 Window.Current.Content 非常适合这个。谢谢!
    猜你喜欢
    • 2015-10-20
    • 1970-01-01
    • 1970-01-01
    • 2014-02-11
    • 1970-01-01
    • 2022-07-31
    • 2015-03-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多