C#/ WPF:将弹出控件放在屏幕中心?

有谁知道如何在屏幕中心放置一个弹出控件?

谢谢!

使用Placement和PlacementTarget属性将其相对于窗口根部的任何面板进行定位。 因此,如果我有一个GridStackPanel等,它包含名为MainPanel的窗口中的所有其他“东西”,我会执行以下操作:

  

首先,您可以使用System.Windows.SystemParameters类的静态属性FullPrimaryScreenHeightFullPrimaryScreenWidth来获取屏幕的高度和宽度。 然后,您可以在显示弹出控件之前使用宽度和高度设置其TopLeft属性。

就像是。

 double primScreenHeight = System.Windows.SystemParameters.FullPrimaryScreenHeight; double primScreenWidth = System.Windows.SystemParameters.FullPrimaryScreenWidth; _yourControl.Top = (primScreenHeight - _yourControl.Height) / 2; _yourControl.Left = (primScreenWidth - _yourControl.Width) / 2; 

使用网格作为容器和对齐将适合您:

    ...    

这些答案中没有一个对我有用,部分原因是我没有Popup的大小。 我最后在代码中执行此操作,如下所示:

 var popup = new Popup { Child = new YourUIControlHere(), Placement = PlacementMode.Center, PlacementRectangle = new Rect(new Size( SystemParameters.FullPrimaryScreenWidth, SystemParameters.FullPrimaryScreenHeight)) }; 

通过为屏幕大小添加绑定,可以很容易地将其扩展到XAML。

一个明显的增强是使用当前屏幕进行多显示器支持。 然而,获得当前窗口尺寸的工作要多得多。