1

这有点难以解释,但我会尽力而为。我目前有一个两列多行的网格。我只希望第二列中的控件有助于网格的高度。

因此,在下面的示例中,我希望列表框是两个文本块的高度,并在需要显示更多数据时显示滚动条。我对如何做到这一点持空白。

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="2*" />
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>

    <ListBox Grid.RowSpan="2" Grid.Column="0" VerticalAlignment="Stretch" />

    <TextBlock Grid.Row="0" Grid.Column="1" />
    <TextBlock Grid.Row="1" Grid.Column="1" />
</Grid>
4

2 回答 2

2

如果您不介意讨厌的黑客攻击:

<FrameworkElement Grid.RowSpan="2" Grid.Column="0" Name="Hax" />
<ListBox Grid.RowSpan="2" Grid.Column="0"
         Height="{Binding ActualHeight, ElementName=Hax}"/>
于 2012-08-30T19:35:30.620 回答
1

现在看起来网格正在拉伸以填充 IT 的父级。尝试将外部 Grid 的高度设置为 Auto 并将 VerticalAlignment 设置为顶部:

<Grid Height="Auto" VerticalAlignment="Top">
  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="*" />
    <ColumnDefinition Width="2*" />
  </Grid.ColumnDefinitions>
  <Grid.RowDefinitions>
    <RowDefinition Height="Auto" />
    <RowDefinition Height="Auto" />
  </Grid.RowDefinitions>

  <ListBox Grid.RowSpan="2" Grid.Column="0" VerticalAlignment="Stretch" />

  <TextBlock Grid.Row="0" Grid.Column="1" />
  <TextBlock Grid.Row="1" Grid.Column="1" />
</Grid>
于 2012-08-30T19:26:46.063 回答