2012-12-06 2 views
0

У меня возникла проблема с получением последнего дочернего элемента формы WPF для расширения формы с изменением размера пользователя. Последний элемент - последний из нескольких стыковочных док-панелей (вложенных док-панелей). Мое понимание док-панелей - это последний добавленный элемент, который не состыкован, будет расширяться, чтобы заполнить оставшуюся часть предоставленного пространства. Однако я не могу получить такое поведение, будь то использование неправильных элементов управления или некоторая ошибка в моем XAML, которую я не вижу; любая помощь будет оценена по достоинству.Разверните последний дочерний элемент DockPanel, чтобы заполнить оставшуюся часть формы, которую пользователь изменяет.

Имейте в виду, что я новичок в XAML и WPF, поэтому моя терминология и использование элементов управления могут быть немного грубыми.

<Grid> 
    <TabControl Margin="1"> 
     <TabItem Header="TabItem"> 
      <DockPanel LastChildFill="True" Height="Auto"> 
       <Expander Header="Client Details" FlowDirection="RightToLeft" IsExpanded="True" Background="#FFC9C9B9" DockPanel.Dock="Top"> 
        <Grid Grid.Row="0" FlowDirection="LeftToRight"> 
         <Grid.ColumnDefinitions> 
          <ColumnDefinition Width="*"/> 
          <ColumnDefinition Width="*"/> 
         </Grid.ColumnDefinitions> 
         <StackPanel Grid.Column="0" Margin="3"> 
          <Label Content="Client Name:" Padding="3"/> 
          <TextBox Padding="3"/> 
          <Label Content="SPA Number:" Padding="3"/> 
          <TextBox Padding="3"/> 
         </StackPanel> 
         <StackPanel Grid.Column="1" Margin="3"> 
          <Label Content="Session ID:" Padding="3"/> 
          <TextBox Padding="3"/> 
          <Label Content="Agent Name:" Padding="3"/> 
          <TextBox Padding="3"/> 
         </StackPanel> 
        </Grid> 
       </Expander> 
       <DockPanel Margin="2" DockPanel.Dock="Top" Background="DarkGray"> 
        <Button Content="Copy" Margin="2" DockPanel.Dock="Right" Padding="3"/> 
        <Button Content="New Session" Padding="3" Margin="2" FontWeight="Bold"/> 
        <Label Content="Session ID:" Padding="3" Margin="2" FontWeight="Bold"/> 
        <ComboBox Padding="3"/> 
       </DockPanel> 
       <DockPanel Margin="5" DockPanel.Dock="Top"> 
        <Label Content="Session ID:"/> 
        <TextBox MinWidth="60" Padding="3"/> 
        <Label Content="Session Type:"/> 
        <ComboBox Padding="3"/> 
       </DockPanel> 
       <DockPanel Margin="5" DockPanel.Dock="Top" VerticalAlignment="Top"> 
        <Label Content="Problem:" MinWidth="60"/> 
        <RichTextBox Padding="3" VerticalScrollBarVisibility="Auto" MaxHeight="100" MinHeight="80"/> 
       </DockPanel> 
       **<DockPanel Margin="5" VerticalAlignment="Top" Background="AliceBlue"> 
        <Label Content="Notes:" MinWidth="60"/> 
        <RichTextBox Padding="3" VerticalScrollBarVisibility="Auto" MaxHeight="400" MinHeight="200"/> 
       </DockPanel>** 
      </DockPanel> 
     </TabItem> 
    </TabControl> 
</Grid> 

Самый последний DockPanel в этом списке вложенных DockPanels (в окружении **) является то, что я пытаюсь заполнить пространство формы, как это повторно размера по вертикали, однако, это не повторно калибровка вообще.

ответ

0

Удалите VerticalAlignment="Top" с этой последней DockPanel. Это вернется к растяжению, заставив его заполнить оставшееся пространство (до 400 как MaxHeight).

+0

Ну, вот и все. Из любопытства, почему это повлияло на выравнивание содержащихся элементов управления? Разве это не просто обеспечение того, чтобы эти элементы управления были выровнены в верхней части панели док-станции? – Josh

+0

Если это не что иное, как растягивание, оно будет соответствовать минимальному размеру контента. Это имеет смысл, так как растяжка просто не выравнивается вообще, а просто заполняет все, что остается (если родитель допускает это) :) – Geerten

Смежные вопросы