public static void AskUnclaimDevice(ParticleDevice particleDevice, Page page, FrameworkElement placementTarget) { var flyout = (Flyout)page.Resources["UnclaimDeviceFlyout"]; var actionButton = FindNameInContainer <Button>(flyout.Content, "UnclaimDeviceButton"); var cancelButton = FindNameInContainer <Button>(flyout.Content, "UnclaimCancelButton"); actionButton.DataContext = particleDevice; RoutedEventHandler actionClickDelegate = null; RoutedEventHandler cancelClickDelegate = null; actionClickDelegate = new RoutedEventHandler(async delegate(object sender, RoutedEventArgs e) { actionButton.Click -= actionClickDelegate; var unclaimed = await particleDevice.UnclaimAsync(); if (unclaimed) { TinkerData.Devices.Remove(particleDevice); } flyout.Hide(); }); cancelClickDelegate = new RoutedEventHandler(delegate(object sender, RoutedEventArgs e) { flyout.Hide(); cancelButton.Click -= cancelClickDelegate; }); actionButton.Click += actionClickDelegate; cancelButton.Click += cancelClickDelegate; flyout.ShowAt(placementTarget); }