这只是一个简单的问题,我无法找到令人满意的答案。在UWP应用程序上工作,在某些部分中,我在Grid中有一个GridView。当然,为了在应用程序中滚动,我不得不给GridView一个高度(比如650),这个高度可能在小屏幕上起作用,但是在较大的屏幕上,一半的应用程序都没有使用!应用程式视窗高度,看来GridView可以在某些尺寸上运作,但在其他尺寸下无法运作...我该如何解决这个问题,或者至少可以解决这个问题?我想将Gridview的高度链接到应用程序窗口的高度。有什么想法吗?
答案 0 :(得分:1)
当您在Grid中具有GridView时,始终可以为其RowDefinition
和ColumnDefinition
赋予"*"
值
然后它将始终占据窗口上未分配的空间。
一个小例子:
<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>
,也不要忘记根据需要设置verticaloption
和Horizontaloption
。