1

让我们假设我有 3 列的网格:

1st column requires minimum height of 100 to display its content
2nd column requires minimum height of 200 to display its content
3rd column requires minimum height of 300 to display its content

所需的总高度为 600。如果可用空间为 900 像素,则额外的 300 像素应在列之间平均分配,因此最终结果为:

1st column height = 200
2nd column height = 300
3rd column height = 400

如果我使用 * 设置高度,那么最终结果是每列 300 像素,这不是我想要的。基本上我需要 auto 和 *. 这可以在 xaml 中完成吗?

4

2 回答 2

1

试试这个 :

<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow"
        Height="800"
        Width="525">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*"
                           MinHeight="100" />
            <RowDefinition Height="*"
                           MinHeight="200" />
            <RowDefinition Height="*"
                           MinHeight="300" />
        </Grid.RowDefinitions>
        <TextBlock  Background="LightBlue"
                    Text="{Binding ActualHeight, Mode=OneWay, RelativeSource={RelativeSource Self}}" />
        <TextBlock Grid.Row="1"
                   Background="LightCyan"
                   Text="{Binding ActualHeight, Mode=OneWay, RelativeSource={RelativeSource Self}}" />
        <TextBlock Grid.Row="2"
                   Background="LightCoral"
                   Text="{Binding ActualHeight, Mode=OneWay, RelativeSource={RelativeSource Self}}" />
    </Grid>
</Window>

您会看到高度至少为 100、200、300,但是一旦有足够的位置,多余的位置将平均分配到各行。

于 2012-09-12T12:52:12.987 回答
0

第一列高度=2*

第二列高度=3*

第三列高度=4*

于 2012-09-12T12:45:25.207 回答