【问题标题】:Close a non-button flyout?关闭非按钮弹出窗口?
【发布时间】:2014-10-17 12:43:15
【问题描述】:

我正在制作一个附加到 LayoutRoot 网格的 Flyout。

<Page.Resources>
    <Flyout x:Key="WinningPopup">
        <StackPanel Margin="50,10">
            <TextBlock x:Uid="Flyout_VictoryTitle" 
                               Text="Victory!" 
                               Style="{StaticResource MessageDialogTitleStyle}" 
                               Margin="0,0,0,15"/>
            <TextBlock x:Name="Flyout_VictoryDescription"
                               x:Uid="Flyout_VictoryDescription" 
                               Text="Congratulations!&#x0a;Score: " 
                               Style="{StaticResource MessageDialogContentStyle}" />

            <StackPanel Orientation="Horizontal">
                <Button x:Name="btnRestart" 
                                x:Uid="btnRestart"
                                Click="btnRestart_Click"
                                Content="[Restart]" 
                                Margin="10"/>
                <Button x:Name="btnCancel" 
                                x:Uid="btnCancel"
                                Click="btnCancel_Click" 
                                Content="[Cancel]" 
                                Margin="10"/>
            </StackPanel>
        </StackPanel>
    </Flyout>
</Page.Resources>

<Grid x:Name="LayoutRoot" FlyoutBase.AttachedFlyout="{StaticResource WinningPopup}">
...

我用

打开此 Flyout
FlyoutBase.ShowAttachedFlyout(LayoutRoot);

但是如何关闭呢?我知道用户可以在外面点击,但是当您单击重新启动或取消按钮时,我还需要关闭浮出控件...

【问题讨论】:

    标签: c# windows-runtime winrt-xaml windows-8.1 windows-phone-8.1


    【解决方案1】:

    给它起个名字

    <Page.Resources>
        <Flyout x:Name="myFlyout" x:Key="WinningPopup">
            // ......
        </Flyout>
    </Page.Resources>
    

    然后你可以只隐藏()

    myFlyout.Hide();
    

    FlyoutBase.Hide method

    【讨论】:

      【解决方案2】:
      public void btnRestart_Click(object sender, RoutedEventArgs) 
      {
          ((((sender as Button).Parent as StackPanel).Parent as StackPanel).Parent as Flyout).Hide();
      }
      

      非常难看,但应该可以。

      【讨论】:

        【解决方案3】:

        你需要先得到它。然后你可以拨打Hide

        FlyoutBase.GetAttachedFlyout((FrameworkElement)LayoutRoot).Hide();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2018-01-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-03-16
          相关资源
          最近更新 更多