protected override void OnApplyTemplate(TemplateAppliedEventArgs e) { base.OnApplyTemplate(e); OverlayLayer.GetOverlayLayer(this).Children.Add(FollowerControl); AdornerLayer.GetAdornerLayer(this).PointerMoved += LayerControlOnPointerMoved; }
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); } }); }
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"); }); }
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)); }
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); }); }
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"); }); }
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() }); } }