Defines an area where you can arrange child elements either horizontally or vertically, relative to each other.
Assembly: PresentationFramework (in PresentationFramework.dll)
XMLNS for XAML: http://schemas.microsoft.com/winfx/2006/xaml/presentation, http://schemas.microsoft.com/netfx/2007/xaml/presentation
The SetDock method changes the position of an element relative to other elements within the same container. Alignment properties, such as HorizontalAlignment, change the position of an element relative to its parent element.
If you set the LastChildFill property to true, which is the default setting, the last child element of a always fills the remaining space, regardless of any other dock value that you set on the last child element. To dock a child element in another direction, you must set the LastChildFill property to false and must also specify an explicit dock direction for the last child element.
Panel elements do not receive focus by default. To compel a panel element to receive focus, set the Focusable property to true.
Note: The position of child elements of a on the screen is determined by the Dock property of the respective child elements and the relative order of those child elements under the . Therefore, a set of child elements with the same Dock property values can be positioned differently on the screen depending on the order of these children under the . Child ordering effects positioning because the iterates through its child elements in order, setting the position of each element depending on remaining space.
The following example creates a simple user interface (UI) framework using a element. The partitions available space to its child elements.
This example uses the Dock property, which is an attached property, to dock two identical Border elements at the Top of the partitioned space. A third Border element is docked to the Left, with its width set to 200 pixels. A fourth Border is docked to the Bottom of the screen. The last Border element automatically fills the remaining space.
// Create the application's main window mainWindow = new Window (); mainWindow.Title = "DockPanel Sample"; // Create the DockPanel DockPanel myDockPanel = new DockPanel(); myDockPanel.LastChildFill = true; // Define the child content Border myBorder1 = new Border(); myBorder1.Height = 25; myBorder1.Background = Brushes.SkyBlue; myBorder1.BorderBrush = Brushes.Black; myBorder1.BorderThickness = new Thickness(1); DockPanel.SetDock(myBorder1, Dock.Top); TextBlock myTextBlock1 = new TextBlock(); myTextBlock1.Foreground = Brushes.Black; myTextBlock1.Text = "Dock = Top"; myBorder1.Child = myTextBlock1; Border myBorder2 = new Border(); myBorder2.Height = 25; myBorder2.Background = Brushes.SkyBlue; myBorder2.BorderBrush = Brushes.Black; myBorder2.BorderThickness = new Thickness(1); DockPanel.SetDock(myBorder2, Dock.Top); TextBlock myTextBlock2 = new TextBlock(); myTextBlock2.Foreground = Brushes.Black; myTextBlock2.Text = "Dock = Top"; myBorder2.Child = myTextBlock2; Border myBorder3 = new Border(); myBorder3.Height = 25; myBorder3.Background = Brushes.LemonChiffon; myBorder3.BorderBrush = Brushes.Black; myBorder3.BorderThickness = new Thickness(1); DockPanel.SetDock(myBorder3, Dock.Bottom); TextBlock myTextBlock3 = new TextBlock(); myTextBlock3.Foreground = Brushes.Black; myTextBlock3.Text = "Dock = Bottom"; myBorder3.Child = myTextBlock3; Border myBorder4 = new Border(); myBorder4.Width = 200; myBorder4.Background = Brushes.PaleGreen; myBorder4.BorderBrush = Brushes.Black; myBorder4.BorderThickness = new Thickness(1); DockPanel.SetDock(myBorder4, Dock.Left); TextBlock myTextBlock4 = new TextBlock(); myTextBlock4.Foreground = Brushes.Black; myTextBlock4.Text = "Dock = Left"; myBorder4.Child = myTextBlock4; Border myBorder5 = new Border(); myBorder5.Background = Brushes.White; myBorder5.BorderBrush = Brushes.Black; myBorder5.BorderThickness = new Thickness(1); TextBlock myTextBlock5 = new TextBlock(); myTextBlock5.Foreground = Brushes.Black; myTextBlock5.Text = "This content will Fill the remaining space"; myBorder5.Child = myTextBlock5; // Add child elements to the DockPanel Children collection myDockPanel.Children.Add(myBorder1); myDockPanel.Children.Add(myBorder2); myDockPanel.Children.Add(myBorder3); myDockPanel.Children.Add(myBorder4); myDockPanel.Children.Add(myBorder5); // Add the parent Canvas as the Content of the Window Object mainWindow.Content = myDockPanel; mainWindow.Show ();
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" WindowTitle="DockPanel Sample"> <DockPanel LastChildFill="True"> <Border Height="25" Background="SkyBlue" BorderBrush="Black" BorderThickness="1" DockPanel.Dock="Top"> <TextBlock Foreground="Black">Dock = "Top"</TextBlock> </Border> <Border Height="25" Background="SkyBlue" BorderBrush="Black" BorderThickness="1" DockPanel.Dock="Top"> <TextBlock Foreground="Black">Dock = "Top"</TextBlock> </Border> <Border Height="25" Background="LemonChiffon" BorderBrush="Black" BorderThickness="1" DockPanel.Dock="Bottom"> <TextBlock Foreground="Black">Dock = "Bottom"</TextBlock> </Border> <Border Width="200" Background="PaleGreen" BorderBrush="Black" BorderThickness="1" DockPanel.Dock="Left"> <TextBlock Foreground="Black">Dock = "Left"</TextBlock> </Border> <Border Background="White" BorderBrush="Black" BorderThickness="1"> <TextBlock Foreground="Black">This content will "Fill" the remaining space</TextBlock> </Border> </DockPanel> </Page>
By default, the last child of a element fills the remaining unallocated space. If you do not want this behavior, set LastChildFill="False".
The compiled application yields a new UI that looks like this.
|How to: Create a DockPanel||The following example creates and uses an instance of by using code. The example shows you how to partition space by creating five Rectangle elements and positioning (docking) them inside a parent . If you retain the default setting, the final rectangle fills all the remaining unallocated space.|
Windows 7, Windows Vista, Windows XP SP2, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003
The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.