Ejemplo n.º 1
0
        private static void WindowPlacementChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
        {
            Button ctrl = d as Button;

            ctrl.Click += ((s, args) =>
            {
                DependencyObject parent = VisualTreeHelper.GetParent(ctrl);
                while ((parent as Window) == null)
                {
                    parent = VisualTreeHelper.GetParent(parent);
                }

                Window rootWindow = (Window)parent;

                NewWindowToShowParameters newWindowParams = ((NewWindowToShowParameters)e.NewValue);
                Window newWin = newWindowParams.NewWindow;
                Border b = (Border)rootWindow.FindName(newWindowParams.TargetVisualName);

                newWin.Width = b.ActualWidth;
                newWin.Height = b.ActualHeight;

                Point pt = b.PointToScreen(new Point(0, 0));
                PresentationSource source = PresentationSource.FromVisual(rootWindow);
                System.Windows.Point targetPoints = source.CompositionTarget.TransformFromDevice.Transform(pt);

                newWin.Top = targetPoints.Y;
                newWin.Left = targetPoints.X;
                newWin.Show();
            });
        }
Ejemplo n.º 2
0
 public static void SetWindowPlacementBehavior(DependencyObject obj, NewWindowToShowParameters value)
 {
     obj.SetValue(WindowPlacementBehaviorProperty, value);
 }