【问题标题】:How to dock bottom of control A to location of a variable-size control B如何将控件 A 的底部停靠到可变大小控件 B 的位置
【发布时间】:2012-04-29 02:02:42
【问题描述】:

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

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

类似:

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

【问题讨论】:

  • 我不确定您所说的“等于图像位置”是什么意思。你的意思是你想让列表框的宽度随着图像的宽度缩放?
  • 我说的是高度。事实上,我希望我的列表框占据它下面的所有可用空间。可能类似于 stackoverflow.com/questions/36108/… 。但那家伙收到了两页长的答案。我想应该有一个开/关开关。如果它是一个 WinForm 应用程序,我输入的 (listbox.height = image.Location) 正是我会做的。它会直接起作用。当我将 listbox.height 数据绑定到 image.Location 时,它只会在我更改 WindowState 时调整大小(切换到全屏,反之亦然)

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


【解决方案1】:

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

使用 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>

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

【讨论】:

  • 选择了停靠面板解决方案。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-25
  • 2011-12-02
  • 1970-01-01
相关资源
最近更新 更多