Exemplo n.º 1
0
        protected override void OnApplyTemplate(TemplateAppliedEventArgs e)
        {
            base.OnApplyTemplate(e);

            OverlayLayer.GetOverlayLayer(this).Children.Add(FollowerControl);
            AdornerLayer.GetAdornerLayer(this).PointerMoved += LayerControlOnPointerMoved;
        }
Exemplo n.º 2
0
 internal static void CloseDialogOn(Control window, Control dialog)
 {
     Dispatcher.UIThread.Post(() =>
     {
         var layer = OverlayLayer.GetOverlayLayer(window);
         if (layer.Children.Contains(dialog))
         {
             layer.Children.Remove(dialog);
         }
     });
 }
Exemplo n.º 3
0
 internal static void CloseDialogOn(WindowBase window, Control dialog)
 {
     Dispatcher.UIThread.Post(() =>
     {
         var layer = OverlayLayer.GetOverlayLayer(window);
         if (layer.Children.Contains(dialog))
         {
             layer.Children.Remove(dialog);
         }
         Debug.WriteLine("dialog closed");
     });
 }
Exemplo n.º 4
0
        static void UnsafeShow(string title, string content, TopLevel topLevel, bool activateIfOnDesktop = true)
        {
            if (activateIfOnDesktop && (topLevel is Window win))
            {
                win.Activate();
            }

            OverlayLayer.GetOverlayLayer(topLevel).Children.Add(ContentDialogFrame.GetFrame(new BasicMessageDialog()
            {
                Title   = title,
                Message = content
            }, topLevel));
        }
Exemplo n.º 5
0
 internal static void ShowDialogOn(Control window, Control dialog)
 {
     Dispatcher.UIThread.Post(() =>
     {
         var layer               = OverlayLayer.GetOverlayLayer(window);
         dialog.Width            = layer.Bounds.Width;
         dialog.Height           = layer.Bounds.Height;
         window.PropertyChanged += (s, e) =>
         {
             dialog.Width  = layer.Bounds.Width;
             dialog.Height = layer.Bounds.Height;
         };
         layer.Children.Add(dialog);
     });
 }
Exemplo n.º 6
0
 internal static void ShowDialogOn(WindowBase window, Control dialog)
 {
     Dispatcher.UIThread.Post(() =>
     {
         dialog.Width            = window.Bounds.Width;
         dialog.Height           = window.Bounds.Height;
         window.PropertyChanged += (s, e) =>
         {
             dialog.Width  = window.Bounds.Width;
             dialog.Height = window.Bounds.Height;
         };
         var layer = OverlayLayer.GetOverlayLayer(window);
         layer.Children.Add(dialog);
         Debug.WriteLine("dialog added");
     });
 }
Exemplo n.º 7
0
        private void LayerControlOnPointerMoved(object sender, PointerEventArgs e)
        {
            var cv = OverlayLayer.GetOverlayLayer(this.GetParentTOfVisual <Window>());

            double delta_v, delta_h;

            //double delta_vlow, delta_hlow;

            delta_v = e.GetCurrentPoint(FollowerControl).Position.Y; //Math.Min(e.GetCurrentPoint(FollowerControl).Position.Y, FollowerControl.Bounds.Height - FollowerControl.MinHeight);
            var t   = Canvas.GetTop(FollowerControl) + delta_v;
            var t_  = t - (FollowerControl.Bounds.Height / 2);
            var t_s = cv.Bounds.Height - t_ - FollowerControl.Bounds.Height;//


            if (t_s >= 0)
            {
                Canvas.SetBottom(FollowerControl, t_s);
                if (t_ >= 0)                            //Canvas.GetTop(FollowerControl) >= 0 || Canvas.GetBottom(FollowerControl) >= 0
                {
                    Canvas.SetTop(FollowerControl, t_); //
                }
            }

            delta_h = e.GetCurrentPoint(FollowerControl).Position.X; //Math.Min(e.GetCurrentPoint(FollowerControl).Position.X, FollowerControl.Bounds.Width + FollowerControl.MinWidth);

            var l = Canvas.GetLeft(FollowerControl) + delta_h;

            var l_ = l - (FollowerControl.Bounds.Width / 2);


            var l_s = cv.Bounds.Width - l_ - FollowerControl.Bounds.Width;//


            if (l_s >= 0)
            {
                Canvas.SetRight(FollowerControl, l_s);
                if (l_ >= 0) //Canvas.GetLeft(FollowerControl) >= 0 || Canvas.GetRight(FollowerControl) >= 0
                {
                    Canvas.SetLeft(FollowerControl, l_);
                }
            }

#if DEBUG
            //   Debug.WriteLine($"moved to Top:{t_} Bottom:{t_s} Left:{l_} Right:{l_s}");
#endif
        }
        public static ContentDialogFrame GetFrame(object content, TopLevel topLevel)
        {
            if (ContentDialog.IsShowingDialog)
            {
                throw new Exception("Cannot show more than one content dialog simultaneously!");
            }
            else
            {
                LastFocusedElement = FocusManager.Instance.Current;

                var layer = OverlayLayer.GetOverlayLayer(topLevel);
                return(new ContentDialogFrame()
                {
                    Content = content,
                    [!Button.WidthProperty] = layer.GetObservable(OverlayLayer.BoundsProperty).Select(x => x.Width).ToBinding(),
                    [!Button.HeightProperty] = layer.GetObservable(OverlayLayer.BoundsProperty).Select(x => x.Height).ToBinding()
                });
            }
        }