控件不会影响其容器的大小

时间:2012-08-30 19:22:31

标签: c# wpf xaml layout

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

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

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

2 个答案:

答案 0 :(得分:2)

如果你不介意讨厌的黑客:

<FrameworkElement Grid.RowSpan="2" Grid.Column="0" Name="Hax" />
<ListBox Grid.RowSpan="2" Grid.Column="0"
         Height="{Binding ActualHeight, ElementName=Hax}"/>

答案 1 :(得分:1)

现在看起来像网格正在伸展以填补IT的父母。尝试将外部网格的高度设置为“自动”和“垂直对齐”为顶部:

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