如何将控件A的底部停靠到可变大小控件B的位置

时间:2012-04-29 02:02:43

标签: c# .net wpf xaml data-binding

在网格中,我有一个列表框,在列表框下面,我有一个图像。当主窗口水平变小时,我的图像保持其比例但尺寸减小,因为它停靠在底部的网格上并且尺寸是自动的。

我的列表框底部是否可以等于图像位置?

类似的东西:

On image_resize 
{
    listbox.Height = image.Location;
}

1 个答案:

答案 0 :(得分:2)

如果您正在寻找要扩展的列表框以填充剩余空间,那么您至少有两个解决方案。

使用DockPanel:

<DockPanel LastChildFill="True">
    <Image Source="..." Dock.DockPanel="Bottom"/>
    <ListBox ItemsSource="{...}" DockPanel.Dock="Top"/>
</DockPanel>

虽然Image是列出的第一个元素,但它停靠在底部,因此它被放置在ListBox下面。因为ListBox是DockPanel中的最后一个元素,所以它将拉伸以填充剩余空间。有关DockPanel的详细信息,请参阅this link

使用网格:

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

    <ListBox Grid.Row="0"/>

    <Image Grid.Row="1"/>
</Grid>

使用网格,您可以请求一行自动调整大小以适应其内容,它可以调整自身大小以填充剩余空间,或者可以为其指定特定高度。 *表示法表示填充剩余空间。有关网格布局的详细信息,请参阅this link;有关快速教程的信息,请参阅this link