Reputation: 6054
I'm making a Flyout attached to the LayoutRoot grid.
<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!
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}">
...
I open this Flyout with
FlyoutBase.ShowAttachedFlyout(LayoutRoot);
But how to close it? I know the user can tap outside, but I also need to close the flyout when you click the restart o the cancel button...
Upvotes: 6
Views: 2767
Reputation: 1922
You need to get it first. Then you can call Hide
.
FlyoutBase.GetAttachedFlyout((FrameworkElement)LayoutRoot).Hide();
Upvotes: -1
Reputation: 811
public void btnRestart_Click(object sender, RoutedEventArgs)
{
((((sender as Button).Parent as StackPanel).Parent as StackPanel).Parent as Flyout).Hide();
}
Very ugly but should work.
Upvotes: 1
Reputation: 8161
Give it a Name
<Page.Resources>
<Flyout x:Name="myFlyout" x:Key="WinningPopup">
// ......
</Flyout>
</Page.Resources>
Then you can just Hide()
myFlyout.Hide();
Upvotes: 6