Example #1
0
        public static void ShowAttachedFlyoutAtPointer(FrameworkElement flyoutOwner, Panel rootPanel)
        {
            var point = PointerHelper.GetPosition();

            // if no pointer, display at the flyout owner
            if (point == null)
            {
                FlyoutBase.ShowAttachedFlyout(flyoutOwner);
                return;
            }

            var bounds = rootPanel.TransformToVisual(Window.Current.Content).TransformPoint(new Point(0, 0));

            var tempGrid = new Grid
            {
                HorizontalAlignment = HorizontalAlignment.Left,
                VerticalAlignment = VerticalAlignment.Top,
                Margin = new Thickness(point.Value.X - bounds.X, point.Value.Y - bounds.Y, 0, 0)
            };

            rootPanel.Children.Add(tempGrid);
            var flyout = FlyoutBase.GetAttachedFlyout(flyoutOwner);
            EventHandler<object> handler = null;
            handler = (o, o1) =>
            {
                rootPanel.Children.Remove(tempGrid);
                flyout.Closed -= handler;
            };
            flyout.Closed += handler;
            flyout.ShowAt(tempGrid);
        }