C# 关闭非按钮弹出按钮?

C# 关闭非按钮弹出按钮?,c#,windows-runtime,winrt-xaml,windows-8.1,windows-phone-8.1,C#,Windows Runtime,Winrt Xaml,Windows 8.1,Windows Phone 8.1,我正在制作一个连接到LayoutRoot网格的弹出按钮 <Page.Resources> <Flyout x:Key="WinningPopup"> <StackPanel Margin="50,10"> <TextBlock x:Uid="Flyout_VictoryTitle" Text="Victory!"

我正在制作一个连接到LayoutRoot网格的弹出按钮

<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}">
...
但是如何关闭它呢?我知道用户可以点击“外部”,但我还需要在单击“重新启动”或“取消”按钮时关闭弹出按钮…

为其命名

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


很难看,但应该有用

你需要先得到它。然后您可以调用
隐藏

FlyoutBase.GetAttachedFlyout((FrameworkElement)LayoutRoot).Hide();
myFlyout.Hide();
public void btnRestart_Click(object sender, RoutedEventArgs) 
{
    ((((sender as Button).Parent as StackPanel).Parent as StackPanel).Parent as Flyout).Hide();
}
FlyoutBase.GetAttachedFlyout((FrameworkElement)LayoutRoot).Hide();