C#/ WPF:将弹出控件放在屏幕中心?
有谁知道如何在屏幕中心放置一个弹出控件?
谢谢!
使用Placement和PlacementTarget属性将其相对于窗口根部的任何面板进行定位。 因此,如果我有一个Grid
, StackPanel
等,它包含名为MainPanel
的窗口中的所有其他“东西”,我会执行以下操作:
首先,您可以使用System.Windows.SystemParameters
类的静态属性FullPrimaryScreenHeight
, FullPrimaryScreenWidth
来获取屏幕的高度和宽度。 然后,您可以在显示弹出控件之前使用宽度和高度设置其Top
和Left
属性。
就像是。
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。
一个明显的增强是使用当前屏幕进行多显示器支持。 然而,获得当前窗口尺寸的工作要多得多。