网格合作共享空间

时间:2014-04-03 16:41:40

标签: c# wpf xaml grid

我有两个元素,我希望它们能够最有效地共享可用空间。采取以下xaml:

<Window x:Class="Gridtest.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" SizeToContent="WidthAndHeight">

    <Grid Height="320" Width="110" >

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

        <ScrollViewer Grid.Row="0" VerticalScrollBarVisibility="Auto" >
            <Border Margin="5" Background="Red" Height="200" />
        </ScrollViewer>

        <ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Auto">
            <Border Margin="5" Background="Blue" Height="100" />
        </ScrollViewer>

    </Grid>
</Window>

这是我追求的红色和蓝色的各种高度组合的结果,但如果可以使用库存面板,我无法解决。使用auto作为行高意味着ScrollViewers不会尊重实际可用空间。最后一个例子只是在蓝色的一半被修剪。

enter image description here

有没有办法让我想要的只是使用库存面板,或者我将不得不自己编写?

1 个答案:

答案 0 :(得分:-1)

这将为第一行提供所有可用空间(在第二行获得所需的最小空间之后):

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

这将分配两行之间的空间:

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

这将以1:2的比例分配第一行和第三行之间的可用空间(在第二行获得所需的最小空间之后):

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

等。等