Xceed Toolkit Plus for WPF v5.0 Documentation
Xceed.Wpf.AvalonDock Assembly / Xceed.Wpf.AvalonDock.Layout Namespace / LayoutPanel Class
Members Example


In This Topic
    LayoutPanel Class
    In This Topic
    Represents a panel that arranges child panes (e.g., LayoutAnchorablePane and  LayoutDocumentPane), which in turn contain the actual content (that is, LayoutAnchorable or LayoutDocument elements), using a specified Orientation and adding a resizer between them.
    Syntax
    'Declaration
     
    <ContentPropertyAttribute("Children")>
    <TypeDescriptionProviderAttribute(MS.Internal.ComponentModel.DependencyObjectProvider)>
    <NameScopePropertyAttribute("NameScope", System.Windows.NameScope)>
    <SerializableAttribute()>
    Public Class LayoutPanel 
       Inherits Xceed.Wpf.AvalonDock.Layout.LayoutPositionableGroup(Of ILayoutPanelElement)
       Implements ILayoutContainerILayoutElementILayoutElementWithVisibilityILayoutGroupILayoutOrientableGroupILayoutPanelElement 
    'Usage
     
    Dim instance As LayoutPanel
    Remarks

    A LayoutPanel can contain child panes directly (that is, LayoutAnchorablePane and LayoutDocumentPane). Panes in turn contain the actual content (that is, LayoutAnchorable or LayoutDocument elements, both of which derive from LayoutContent).

    A LayoutPanel can also contain "pane group" elements (i.e., LayoutAnchorablePaneGroup or LayoutDocumentPaneGroup), which group child panes together and allow various characteristics to be determined, such as the initial width/height the docked group occupies, the initial width/height of floating windows created from content dragged from them, and the orientation of the panes in the group (which is independent of the orientation of the LayoutPanel).

    The RootPanel property of the LayoutRoot class is set to an instance of this class.

    AvalonDock adheres to an MVVM design.

    The Model is represented by the classes contained in the Xceed.Wpf.AvalonDock.Layout namespace. The classes in this namespace are the layout elements in a layout model (for example LayoutAnchorable/LayoutDocument, LayoutAnchorablePane/LayoutDocumentPaneLayoutAnchorablePaneGroup/LayoutDocumentPaneGroup, etc.) that are used directly in XAML within a DockingManager to describe how the layout is composed.

    The View is represented by the classes contained in the Xceed.Wpf.AvalonDock.Controls namespace; these classes are a set of stylizable controls that show the user controls. The names of the view controls typically end with "Control" (for example, LayoutAnchorableControl is the view control, whereas LayoutAnchorable is the model element).

    The DockingManager uses various classes (such as the LayoutItem and its derived classes) to perform the role of the ViewModel, preparing the model to be consumed by the view.

    There is one and only one logical tree, which has the DockingManager as its root. Even if a control is placed in a different window (i.e., autohidden windows or floating windows), it always belong to the same logical tree below the DockingManager.

    Example
    The following shows how to use LayoutPanel, as well as various other elements.
    <xcad:DockingManager Grid.Row="1" MaxHeight="425"
                         AllowMixedOrientation="True"
                         BorderBrush="Black"
                         BorderThickness="1">
      <xcad:DockingManager.DocumentHeaderTemplate>
        <DataTemplate>
          <StackPanel Orientation="Horizontal">
            <Image Source="{Binding IconSource}" Margin="0,0,4,0"/>
            <TextBlock Text="{Binding Title}" />
          </StackPanel>
        </DataTemplate>
      </xcad:DockingManager.DocumentHeaderTemplate>
      <xcad:LayoutRoot x:Name="_layoutRoot">
        <xcad:LayoutPanel Orientation="Horizontal">
          <xcad:LayoutAnchorablePane DockWidth="200">
            <xcad:LayoutAnchorable ContentId="properties" Title="Properties" CanHide="False" CanClose="False"
                                      AutoHideWidth="240"
                                   IconSource="../Images/property-blue.png">
              <xctk:PropertyGrid NameColumnWidth="110"
                 SelectedObject="{Binding ElementName=_layoutRoot, Path=LastFocusedDocument.Content}"/>
            </xcad:LayoutAnchorable>
          </xcad:LayoutAnchorablePane>
          <xcad:LayoutDocumentPaneGroup >
            <xcad:LayoutDocumentPane>
              <xcad:LayoutDocument ContentId="document1" Title="Document 1" IconSource="../Images/document.png" >
                <Button Content="Document 1 Content" HorizontalAlignment="Center" VerticalAlignment="Center"/>
              </xcad:LayoutDocument>
              <xcad:LayoutDocument ContentId="document2" Title="Document 2" IconSource="../Images/document.png">
                <TextBox Text="Document 2 Content" AcceptsReturn="True"/>
              </xcad:LayoutDocument>
            </xcad:LayoutDocumentPane>
          </xcad:LayoutDocumentPaneGroup >
          <xcad:LayoutAnchorablePaneGroup DockWidth="125">
            <xcad:LayoutAnchorablePane>
              <xcad:LayoutAnchorable ContentId="alarms" Title="Alarms" IconSource="../Images/alarm-clock-blue.png" >
                <ListBox>
                  <s:String>Alarm 1</s:String>
                  <s:String>Alarm 2</s:String>
                  <s:String>Alarm 3</s:String>
                </ListBox>
              </xcad:LayoutAnchorable>
              <xcad:LayoutAnchorable ContentId="journal" Title="Journal" >
                <RichTextBox>
                  <FlowDocument>
                    <Paragraph FontSize="14" FontFamily="Segoe">
                      This is the content of the Journal Pane.
                      <LineBreak/>
                      A
                      <Bold>RichTextBox</Bold> has been added here
                    </Paragraph>
                  </FlowDocument>
                </RichTextBox>
              </xcad:LayoutAnchorable>
            </xcad:LayoutAnchorablePane>
          </xcad:LayoutAnchorablePaneGroup>
        </xcad:LayoutPanel>
    
        <xcad:LayoutRoot.LeftSide>
          <xcad:LayoutAnchorSide>
            <xcad:LayoutAnchorGroup>
              <xcad:LayoutAnchorable Title="Agenda" ContentId="agenda" IconSource="../Images/address-book-open.png">
                <TextBlock Text="Agenda Content" Margin="10" FontSize="18" FontWeight="Black" TextWrapping="Wrap"/>
              </xcad:LayoutAnchorable>
              <xcad:LayoutAnchorable Title="Contacts" ContentId="contacts" IconSource="../Images/address-book--pencil.png" >
                <TextBlock Text="Contacts Content" Margin="10" FontSize="18" FontWeight="Black" TextWrapping="Wrap"/>
              </xcad:LayoutAnchorable>
            </xcad:LayoutAnchorGroup>
          </xcad:LayoutAnchorSide>
        </xcad:LayoutRoot.LeftSide>
      </xcad:LayoutRoot>
    </xcad:DockingManager>
    Inheritance Hierarchy

    System.Object
       System.Windows.Threading.DispatcherObject
          System.Windows.DependencyObject
             Xceed.Wpf.AvalonDock.Layout.LayoutElement
                Xceed.Wpf.AvalonDock.Layout.LayoutGroupBase
                   Xceed.Wpf.AvalonDock.Layout.LayoutGroup<T>
                      Xceed.Wpf.AvalonDock.Layout.LayoutPositionableGroup<T>
                         Xceed.Wpf.AvalonDock.Layout.LayoutPanel

    Requirements

    Target Platforms: Windows 11, Windows 10, Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

    See Also