AvalonDock:如何自动调整控件的大小?

时间:2019-02-12 03:03:54

标签: wpf autoresize

当调整其宿主窗口的大小时,我似乎无法自动调整AvalonDock控件的大小。 (此外,控件应在启动时停靠在整个窗口中,这也使我难以理解。)

我已经尝试过hereenter image description here等此处的其他地方的HorizontalAlignmentVerticalAlignment属性,但是它们不适用于此控件。调整窗口大小时,不会调整控件大小。

从它的声音来看,这些属性控制为其 child 控件调整控件的大小。但是,我需要使用其 parent (窗口)来调整控件的大小。

这是我的XAML,它是从Xceed示例复制而来的,并进行了少许修改以在我的环境中运行:

<Window 
  x:Class="Docker"
  xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  xmlns:xctk="http://schemas.xceed.com/wpf/xaml/toolkit"
  xmlns:xcad="http://schemas.xceed.com/wpf/xaml/avalondock"
  xmlns:s="clr-namespace:System;assembly=mscorlib"
  Title="AvalonDock">

  <Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
    <Grid.RowDefinitions>
      <RowDefinition Height="Auto" />
      <RowDefinition Height="*" />
    </Grid.RowDefinitions>

    <TextBlock Grid.Row="0"
               Text="Usage:"
               Style="{StaticResource Header}" />

    <StackPanel Grid.Row="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
      <xcad:DockingManager x:Name="_dockingManager"
                           HorizontalAlignment="Stretch"
                           VerticalAlignment="Stretch"
                           AllowMixedOrientation="True"
                           BorderBrush="Gray"
                           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\table-gear.png">
                <xctk:PropertyGrid NameColumnWidth="110"
                                   SelectedObject="{Binding ElementName=_layoutRoot, Path=LastFocusedDocument.Content}"
                                   AutoGenerateProperties="False">
                  <xctk:PropertyGrid.PropertyDefinitions>
                    <xctk:PropertyDefinition TargetProperties="Background" />
                    <xctk:PropertyDefinition TargetProperties="BorderBrush" />
                    <xctk:PropertyDefinition TargetProperties="BorderThickness" />
                    <xctk:PropertyDefinition TargetProperties="FontSize" />
                    <xctk:PropertyDefinition TargetProperties="FontStyle" />
                    <xctk:PropertyDefinition TargetProperties="Width" />
                    <xctk:PropertyDefinition TargetProperties="Height" />
                  </xctk:PropertyGrid.PropertyDefinitions>
                </xctk:PropertyGrid>
              </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.png"
                                       CanClose="True">
                  <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\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-edit.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>

      <StackPanel Orientation="Horizontal"
                  HorizontalAlignment="Center">
        <Button Content="Save AvalonDock"
                Margin="5"
                Padding="5"
                Click="SaveButton_Click" />
        <Button Content="Load AvalonDock"
                Margin="5"
                Padding="5"
                Click="LoadButton_Click" />
      </StackPanel>
    </StackPanel>
  </Grid>
</Window>

ConcurrentBag<>

1 个答案:

答案 0 :(得分:1)

摆脱StackPanel第二行上的GridStackPanel不会调整其子级的大小。

还请注意,HorizontalAlignment的{​​{1}}和VerticalAlignment的默认值均为Grid,因此您无需显式设置它们。

尝试一下:

Stretch