关闭一个非按钮弹出按钮?

时间:2014-08-24 01:14:49

标签: 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!" 
                               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);

但如何关闭呢?我知道用户可以在外面点击,但是当你点击重新启动时我也需要关闭弹出按钮取消按钮......

3 个答案:

答案 0 :(得分:6)

给它一个名字

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

然后你可以隐藏()

myFlyout.Hide();

FlyoutBase.Hide method

答案 1 :(得分:1)

public void btnRestart_Click(object sender, RoutedEventArgs) 
{
    ((((sender as Button).Parent as StackPanel).Parent as StackPanel).Parent as Flyout).Hide();
}

非常难看,但应该工作。

答案 2 :(得分:-1)

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

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