关闭非按钮式弹出窗口?

6
我正在创建一个附加到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);

但是如何关闭它呢?我知道用户可以在外部轻触来关闭它,但当您点击重新启动或取消按钮时,我也需要关闭飞出菜单...

3个回答

6
给它命名
<Page.Resources>
    <Flyout x:Name="myFlyout" x:Key="WinningPopup">
        // ......
    </Flyout>
</Page.Resources>

那么你可以只需调用Hide()函数即可隐藏它。
myFlyout.Hide();

FlyoutBase.Hide method


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

非常丑陋但应该可以运行。

-1
你需要先获取它。然后才能调用 Hide
FlyoutBase.GetAttachedFlyout((FrameworkElement)LayoutRoot).Hide();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接