Элемент DockPanel в WPF

Автор: Мэхеш Чанд (Mahesh Chand)

В этой статье будет показано, как использовать элемент WPF DockPanel с помощью XAML и C#.

Панель закрепления используется для закрепления дочерних элементов слева, справа, сверху и снизу относительно других элементов. Положение дочерних элементов определяется свойством Dock соответствующих дочерних элементов и связанным порядком этих дочерних элементов. Значением свойства Dock по умолчанию является Left (слева). Свойство Dock принимает значения типа перечисления Dock, состоящего из значений Left, Right, Top и Bottom.

Приведенный ниже код создает панель DockPanel с пятью элементами Button. Четыре кнопки закрепляются, а для пятой закрепление не задано, и она заполняет всю оставшуюся область.

<DockPanel Name="dcPanel">        
    <Button Name="TopRect" DockPanel.Dock="Top" Background="LightGreen"
            Height="50" Content="Top"/>
    <Button Name="LeftRect" DockPanel.Dock="Left" Background="LightBlue"
            Width="50" Content="Left"/>
    <Button Name="RightRect" DockPanel.Dock="Right" Background="LightSalmon"
            Width="50" Content="Right"/>
    <Button Name="BottomRect" DockPanel.Dock="Bottom" Background="LightCyan"
            Height="50"/>
    <Button Name="Fill" Background="LightGray" />
</DockPanel>

Рис. 1.

Класс DockPanel в WPF представляет собой элемент управления DockPanel. Приведенный ниже код создает панель закрепления динамически, добавляет на нее пять элементов управления Button и устанавливает их свойства закрепления, используя метод SetDock. Результатом кода примера является рис. 1.

private void CreateADockPanelDynamically()
{
    // Создать DockPanel
    DockPanel dcPanel = new DockPanel();
 
    // Создать кнопку
    Button TopRect = new Button();
    TopRect.Background = new SolidColorBrush(Colors.LightGreen);
    TopRect.Height = 50;
    TopRect.Content = "Top";
    // Закрепить кнопку сверху
    DockPanel.SetDock(TopRect, Dock.Top);
    // Добавить закрепленную кнопку на панель DockPanel
    dcPanel.Children.Add(TopRect);
 
    // Создать кнопку
    Button LeftRect = new Button();
    LeftRect.Background = new SolidColorBrush(Colors.LightBlue);
    LeftRect.Width = 50;
    LeftRect.Content = "Left";
    // Закрепить кнопку слева
    DockPanel.SetDock(LeftRect, Dock.Left);
    // Добавить закрепленную кнопку на панель DockPanel
    dcPanel.Children.Add(LeftRect);
 
    // Создать кнопку
    Button RightRect = new Button();
    RightRect.Background = new SolidColorBrush(Colors.LightSalmon);
    RightRect.Width = 50;
    RightRect.Content = "Right";
    // Закрепить кнопку слева
    DockPanel.SetDock(RightRect, Dock.Right);
    // Добавить закрепленную кнопку на панель DockPanel
    dcPanel.Children.Add(RightRect);
 
    // Создать кнопку
    Button BottomRect = new Button();
    BottomRect.Background = new SolidColorBrush(Colors.LightCyan);
    BottomRect.Height = 50;
    BottomRect.Content = "Bottom";
    // Закрепить кнопку слева
    DockPanel.SetDock(BottomRect, Dock.Bottom);
    // Добавить закрепленную кнопку на панель DockPanel
    dcPanel.Children.Add(BottomRect);
 
    // Создать заполненную кнопку
    Button FillRect = new Button();
    BottomRect.Background = new SolidColorBrush(Colors.LightGray);
 
    // Добавить закрепленную кнопку на панель DockPanel
    dcPanel.Children.Add(FillRect);
 
    RootWindow.Content = dcPanel;
 
}

Пример кода 1