Centering a WPF control

fill, layout, wpf

Solution

Use a `Grid`:

  <Grid>  
    <Grid.ColumnDefinitions>
      <ColumnDefinition Width="*"/>
      <ColumnDefinition Width="Auto"/>
      <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
      <RowDefinition Height="*"/>
      <RowDefinition Height="Auto"/>
      <RowDefinition Height="*"/>
    </Grid.RowDefinitions>
    <!-- Replace with your UserControl -->
    <Button Content="Foo" Grid.Column="1" Grid.Row="1"/>
  </Grid>

You can dock it inside your `DockPanel` (if you must have a `DockPanel` there) to stretch. And, of course, while the above is all markup, you can just as easily create such a grid from code.

Problem

I have a window where I add a new `UserControl` to (with an image), I simply want to center the control in the middle of the screen (both vertically and horizontally). I can only get the vertical one to work. I'm gonna swap content in the `DockPanel` from my CodeBehind and want to show this startup screen before I start doing my slideshow UI, this means that the content is set from the CodeBehind. My `Window`: ``` <Window x:Class="GreenWebPlayerWPF.Window1" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Title="Window1" Height="512" Width="853" WindowStyle="None" WindowState="Maximized" WindowStartupLocation="CenterScreen"> <DockPanel Width="Auto" Height="Auto" Name="TransitionContainer" Background="Black" Margin="0" LastChildFill="True"></DockPanel> </Window> ``` My `UserControl`: ``` <UserControl x:Class="GreenWebPlayerWPF.FrontPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> <DockPanel Background="Black"> <Image Name="image1" Stretch="None" Source="/GreenWebPlayerWPF;component/gw.png" /> </DockPanel> </UserControl> ``` Please note that I'm using maximized/full screen.

Original source