private void FlyoutClosedHandler(object sender, RoutedEventArgs e)
{
var openFlyoutDetail = openFlyouts.FirstOrDefault(x => x.FlyoutType == ((Flyout)sender).GetType());
if (openFlyoutDetail == null) return;
if (!openFlyoutDetail.IsHidden)
{
openFlyoutDetail.Flyout.ClosingFinished -= FlyoutClosedHandler;
flyoutsControl.Items.Remove(openFlyoutDetail.Flyout);
openFlyoutDetail.TaskCompletionSource.SetResult(openFlyoutDetail.Flyout);
openFlyouts.Remove(openFlyoutDetail);
}
}