C# 弹出式按钮';s";“轻率解雇”;导致需要2个分接头才能打开下一个弹出按钮

C# 弹出式按钮';s";“轻率解雇”;导致需要2个分接头才能打开下一个弹出按钮,c#,xaml,win-universal-app,uwp,C#,Xaml,Win Universal App,Uwp,我有两个按钮,点击时显示。我将以与中所示相同的方式显示它们: 我的问题是,如果按钮1的弹出按钮打开,屏幕上的下一次点击将关闭弹出按钮。这很好,但是如果下一次点击恰好在按钮2上,我希望触发按钮的点击事件并打开其弹出按钮。相反,该按钮根本不注册点击,并关闭按钮1的弹出按钮 这导致需要点击两次-一次关闭按钮1的弹出按钮,另一次显示按钮2的弹出按钮 换言之: 当前流量: 轻触按钮1 按钮1的弹出按钮打开 点击按钮2 按钮1的弹出按钮关闭(按钮2,或页面记录点击) 点击按钮2 现在按钮2的弹出按钮打开 我

我有两个按钮,点击时显示。我将以与中所示相同的方式显示它们:

我的问题是,如果按钮1的弹出按钮打开,屏幕上的下一次点击将关闭弹出按钮。这很好,但是如果下一次点击恰好在按钮2上,我希望触发按钮的点击事件并打开其弹出按钮。相反,该按钮根本不注册点击,并关闭按钮1的弹出按钮

这导致需要点击两次-一次关闭按钮1的弹出按钮,另一次显示按钮2的弹出按钮

换言之:

当前流量:

  • 轻触按钮1
  • 按钮1的弹出按钮打开
  • 点击按钮2
  • 按钮1的弹出按钮关闭(按钮2,或页面记录点击)
  • 点击按钮2
  • 现在按钮2的弹出按钮打开
  • 我在找什么:

  • 轻触按钮1
  • 按钮1的弹出按钮打开
  • 点击按钮2
  • 按钮1的弹出按钮关闭,按钮2的弹出按钮打开
  • 我该怎么做?我已经尝试截取页面的点击事件,但是当弹出按钮打开时,它似乎截取了点击事件,因此可以用于弹出按钮的灯光

    覆盖弹出型按钮或弹出型按钮的样式对我有帮助吗?或者可能以更MVVM的方式打开弹出型按钮,这将允许我更好地控制弹出型按钮的打开/关闭方式


    我不知道该怎么解决这个问题

    以下是我在Microsoft文档中找到的内容:

    当轻触解除时,此手势通常会被吸收,而不会传递到下面的UI。例如,如果在打开的弹出按钮后面有一个可见的按钮,则用户的第一次点击将取消弹出按钮,但不会激活此按钮。按下按钮需要第二次轻触

    可以通过将按钮指定为弹出型按钮的输入传递元素来更改此行为。弹出按钮将因上述灯光熄灭操作而关闭,并将tap事件传递到其指定的OverlayinPuthThroughElement。考虑采用这种行为来加快用户在功能类似项目上的交互。如果你的应用程序有一个Favorites集合,并且集合中的每个项目都包含一个附加的弹出按钮,那么用户可能希望快速连续地与多个弹出按钮交互是合理的

    [!注意]小心不要指定会导致破坏性操作的覆盖输入传递元素。用户已经习惯于不激活主用户界面的谨慎的轻动作。关闭、删除或类似破坏性按钮不应在灯光熄灭时激活,以避免意外和破坏性行为。 在下面的示例中,FavoritesBar内的所有三个按钮将在第一次点击时激活

    <Page>
    <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"/>
            <RowDefinition Height="*"/>
        </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>
        <ScrollViewer Grid.Row="1">
            <WebView x:Name="WebContent"/>
        </ScrollViewer>
    </Grid>
    

    你找到解决办法了吗?我对菜单也有同样的问题,但作为上下文菜单使用。不,还没有解决方案。我可能会尝试用弹出窗口替换弹出框,看看是否可以更好地控制dismission.doc链接:
    <Page>
    <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"/>
            <RowDefinition Height="*"/>
        </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>
        <ScrollViewer Grid.Row="1">
            <WebView x:Name="WebContent"/>
        </ScrollViewer>
    </Grid>
    
    private void Folder2_Click(object sender, RoutedEventArgs e){
     Flyout flyout = new Flyout();
     flyout.OverlayInputPassThroughElement = FavoritesBar;
    
     flyout.ShowAt(sender as FrameworkElement);}