关闭非按钮浮出控件

本文关键字:控件 按钮 | 更新日期: 2023-09-27 18:19:11

我正在制作一个附加到 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}">
...

我打开此浮出控件

FlyoutBase.ShowAttachedFlyout(LayoutRoot);

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

关闭非按钮浮出控件

给它起个名字

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

然后你可以只隐藏((

myFlyout.Hide();

FlyoutBase.Hide 方法

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

非常丑陋,但应该可以工作。

你需要先得到它。然后你可以打电话给Hide.

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