如何为不同的屏幕尺寸和不同的窗口尺寸固定Gridview高度?

时间:2018-07-29 17:41:42

标签: c# xaml uwp

这只是一个简单的问题,我无法找到令人满意的答案。在UWP应用程序上工作,在某些部分中,我在Grid中有一个GridView。当然,为了在应用程序中滚动,我不得不给GridView一个高度(比如650),这个高度可能在小屏幕上起作用,但是在较大的屏幕上,一半的应用程序都没有使用!应用程式视窗高度,看来GridView可以在某些尺寸上运作,但在其他尺寸下无法运作...我该如何解决这个问题,或者至少可以解决这个问题?我想将Gridview的高度链接到应用程序窗口的高度。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

当您在Grid中具有GridView时,始终可以为其RowDefinitionColumnDefinition赋予"*"

然后它将始终占据窗口上未分配的空间。

一个小例子:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="150"/> 
        <RowDefinition Height="*" 
                       MinHeight="50" 
                       MaxHeight="500"/>
        <RowDefinition Height="150"/>
    </Grid.RowDefinitions>

    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="150"/>
        <ColumnDefinition Width="*" 
                          MinWidth="100" 
                          MaxWidth="1000"/>
        <ColumnDefinition Width="150"/>
    </Grid.ColumnDefinitions>

    <GridView Grid.Row="1"
              Grid.Column="1">

    </GridView>
</Grid>

请注意,我还添加了最大和最小高度/宽度的值。这样,您可以进一步限制网格中项目的大小。

唯一要记住的是,当您使用"*"值时,它将占用所有剩余空间(如果设置了max / min,则在其限制之内)。 但是当您有两个具有该值的定义,如下所示:

<Grid.ColumnDefinitions>
        <ColumnDefinition Width="150"/>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="150"/>
    </Grid.ColumnDefinitions>

然后,两列/行将占用相同的空间。假设我们的窗口宽度为800,那么两列将共享中间的500。两列各占250。

您也可以这样写它来改变它:

<Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="2*" />
    </Grid.ColumnDefinitions>

这将为第二列分配两倍于第一列的屏幕宽度。 假设我们的屏幕宽度为900。 那么第一列将为300宽,第二列将为600宽。

答案 1 :(得分:1)

为了使应用适合不同的屏幕尺寸,请紧记一件事,避免静态行和列的高度和宽度。

您的网格这样的东西。

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

<Grid.ColumnDefinitions>
        <ColumnDefinition Width="*" />
        <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
</Grid>

,也不要忘记根据需要设置verticaloptionHorizontaloption