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


In This Topic
    LayoutRoot Class
    In This Topic
    Represents the root of the layout model.
    Syntax
    'Declaration
     
    <ContentPropertyAttribute("RootPanel")>
    <TypeDescriptionProviderAttribute(MS.Internal.ComponentModel.DependencyObjectProvider)>
    <NameScopePropertyAttribute("NameScope", System.Windows.NameScope)>
    <SerializableAttribute()>
    Public Class LayoutRoot 
       Inherits LayoutElement
       Implements ILayoutContainerILayoutElementILayoutRoot 
    'Usage
     
    Dim instance As LayoutRoot
    [ContentProperty("RootPanel")]
    [TypeDescriptionProvider(MS.Internal.ComponentModel.DependencyObjectProvider)]
    [NameScopeProperty("NameScope", System.Windows.NameScope)]
    [Serializable()]
    public class LayoutRoot : LayoutElement, ILayoutContainerILayoutElementILayoutRoot  
    Remarks

    The Layout property of DockingManager is set to an instance of this class.

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

    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" instances (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 LayoutRoot class provides four "Side" properties (e.g., LeftSide), which are used in conjunction with the LayoutAnchorSide and the LayoutAnchorGroup classes to set up autohide LayoutAnchorable elements along the border of the containing DockingManager. These elements are initially collapsed to the side to which they are anchored, displaying only a tab, and the "pin" glyph is pointing to the left. If the pin glyph of an autohide anchorable is clicked so that the pin is pointing down, the anchorable is no longer remains visible. Only LayoutAnchorable elements can be autohidden.

    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 LayoutRoot, 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.LayoutRoot

    Public Constructors
     NameDescription
    Public ConstructorInitializes a new instance of the LayoutRoot class.  
    Top
    Public Properties
     NameDescription
    Public PropertyGets the active LayoutContent-derived element.  
    Public PropertyGets or sets the bottom side of the layout root.  
    Public PropertyGets the child elements of the layout root.  
    Public PropertyGets the number of child elements.  
    Public Property (Inherited from System.Windows.DependencyObject)
    Public Property (Inherited from System.Windows.Threading.DispatcherObject)
    Public PropertyGets the floating windows that are in the layout.  
    Public PropertyGets the hidden anchorables in the layout.  
    Public Property (Inherited from System.Windows.DependencyObject)
    Public PropertyGets the last focused content.  
    Public PropertyGets or sets the left side of the layout root.  
    Public PropertyGets the DockingManager that arranges the panes it contains and handles autohide anchorables and floating windows.  
    Public PropertyGets or sets the parent container of the element. (Inherited from Xceed.Wpf.AvalonDock.Layout.LayoutElement)
    Public PropertyGets or sets the right side of the layout root.  
    Public PropertyGets or sets the root of the element. (Inherited from Xceed.Wpf.AvalonDock.Layout.LayoutElement)
    Public PropertyGets or sets the root layout panel.  
    Public PropertyGets or sets the top side of the layout root.  
    Top
    Public Methods
     NameDescription
    Public MethodOverloaded.  (Inherited from System.Windows.DependencyObject)
    Public Method (Inherited from System.Windows.DependencyObject)
    Public MethodRemoves any empty containers not directly referenced by other layout items.  
    Public Method (Inherited from System.Windows.DependencyObject)
    Public Method (Inherited from System.Windows.DependencyObject)
    Public Method (Inherited from System.Windows.DependencyObject)
    Public Method  
    Public Method (Inherited from System.Windows.DependencyObject)
    Public Method (Inherited from System.Windows.DependencyObject)
    Public Method (Inherited from System.Windows.DependencyObject)
    Public Method  
    Public MethodRemoves the specified child element.  
    Public MethodReplaces on child element with another.  
    Public Method (Inherited from System.Windows.DependencyObject)
    Public MethodOverloaded.  (Inherited from System.Windows.DependencyObject)
    Public Method  
    Top
    Protected Methods
     NameDescription
    Protected MethodProvides derived classes an opportunity to handle changes to the Parent property. (Inherited from Xceed.Wpf.AvalonDock.Layout.LayoutElement)
    Protected MethodProvides derived classes an opportunity to execute code before the Parent property changes. (Inherited from Xceed.Wpf.AvalonDock.Layout.LayoutElement)
    Protected Method (Inherited from System.Windows.DependencyObject)
    Protected MethodProvides derived classes an opportunity to handle changes to the Root property. (Inherited from Xceed.Wpf.AvalonDock.Layout.LayoutElement)
    Protected MethodRaises the PropertyChanged event for the specified property name. (Inherited from Xceed.Wpf.AvalonDock.Layout.LayoutElement)
    Protected MethodRaises the PropertyChanging event for the specified property name. (Inherited from Xceed.Wpf.AvalonDock.Layout.LayoutElement)
    Protected Internal Method (Inherited from System.Windows.DependencyObject)
    Top
    Public Events
     NameDescription
    Public EventRaised when an element is added to the layout.  
    Public EventRaised when an element is removed from the layout.  
    Public EventRaised when a property has changed. (Inherited from Xceed.Wpf.AvalonDock.Layout.LayoutElement)
    Public EventRaised when a property is about to change. (Inherited from Xceed.Wpf.AvalonDock.Layout.LayoutElement)
    Public EventRaised when the layout is updated.  
    Top
    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