У меня возникла проблема с получением последнего дочернего элемента формы 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 (в окружении **) является то, что я пытаюсь заполнить пространство формы, как это повторно размера по вертикали, однако, это не повторно калибровка вообще.
Ну, вот и все. Из любопытства, почему это повлияло на выравнивание содержащихся элементов управления? Разве это не просто обеспечение того, чтобы эти элементы управления были выровнены в верхней части панели док-станции? – Josh
Если это не что иное, как растягивание, оно будет соответствовать минимальному размеру контента. Это имеет смысл, так как растяжка просто не выравнивается вообще, а просто заполняет все, что остается (если родитель допускает это) :) – Geerten