Does anyone know how I can place a Popup Control in the Center of the screen?
Thanks!
Use the Placement and PlacementTarget properties to position it relative to whatever panel is at the root of the window. So if I have a Grid
, StackPanel
, etc. that contains all the other "stuff" in the window called MainPanel
, I do something like:
<Popup
PlacementTarget="{Binding ElementName=MainPanel}"
Placement="Center"
>
First, you can use the static properties FullPrimaryScreenHeight
, FullPrimaryScreenWidth
of the System.Windows.SystemParameters
class to get the height and width of the screen. Then, you can set the Top
and Left
properties of your Popup Control using the width and height before showing it.
Something like.
double primScreenHeight = System.Windows.SystemParameters.FullPrimaryScreenHeight;
double primScreenWidth = System.Windows.SystemParameters.FullPrimaryScreenWidth;
_yourControl.Top = (primScreenHeight - _yourControl.Height) / 2;
_yourControl.Left = (primScreenWidth - _yourControl.Width) / 2;
None of these answers worked for me in part because I don't have the size of the Popup. I ended up doing this in code behind as follows:
var popup = new Popup
{
Child = new YourUIControlHere(),
Placement = PlacementMode.Center,
PlacementRectangle = new Rect(new Size(
SystemParameters.FullPrimaryScreenWidth,
SystemParameters.FullPrimaryScreenHeight))
};
This could easily be extended to XAML by adding a binding for the screen size.
An obvious enhancement is to use the current screen for multi-monitor support. Getting the current window dimensions is considerably more work however.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With