展开DockPanel的最后一个子节点以填充用户调整大小的表单的其余部分

时间:2012-12-06 08:08:07

标签: wpf wpf-controls

我遇到一个问题,即在用户重新调整大小时,使用表单扩展WPF表单的最后一个子项。最后一个元素是几个停靠的dockpanels(嵌套的dockpanels)中的最后一个。我对dockpanels的理解是最后添加的未停靠的元素将扩展以填充所提供的剩余空间。但是,我无法得到那种行为,无论是通过使用错误的控件还是我的XAML中的一些我没有看到的错误;任何帮助将不胜感激。

请记住,我是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>

这个嵌套的DockPanels列表中的最后一个DockPanel(由**包围)正是我试图填充表单的空间,因为它在垂直方向上重新调整大小,但它根本没有重新调整大小。

1 个答案:

答案 0 :(得分:0)

从最后一个DockPanel中删除VerticalAlignment="Top"。这将跳回拉伸,使其填充剩余空间(最多400作为MaxHeight)。