我有这个问题的反面:如何动态调整 GridView 项目的大小? https://stackoverflow.com/questions/13254107/how-do-i-dynamically-size-a-gridview-item
我有一个包含两行和四列的 GridView。所需的行为是 GridViewItems 填充单元格,但我无法找到执行此操作的方法。 GridViewItem 是一个包含其他一些内容的网格,我将其作为 DataTemplate 来使用。我可以为项目提供宽度和高度,但这仅适用于一种分辨率,并且我需要项目是动态且成比例的,因此如果它们显示在不同的设备上,它们将继续为 2 行,每行 4 个项目。
在不同的页面上,我有一个具有相同布局的静态网格,每个单元格中包含矩形。这些会自动拉伸,我尝试将它们的宽度和高度存储在我在矩形的 SizeChanged 上获得的 DependencyProperties 中,但我不知道如何绑定到它们。
页面XAML是这样的:
<Grid x:Name="Pane2LayoutGrid"
Grid.Column="1">
<Grid.RowDefinitions>
<RowDefinition Height="90"/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock x:Name="TitleText" Text="Favorites" Style="{StaticResource TitleBarHeader}"/>
<GridView x:Name="GridView"
Grid.Row="1"
Margin="0,10,0,8"
Style="{StaticResource GridView}"
ItemsSource="{Binding Items, Source={StaticResource vm}}"
/>
</Grid>
和数据模板:
<DataTemplate>
<Grid>
<Border x:Name="Border" Style="{StaticResource GridBorder}">
<Grid x:Name="grid" Style="{StaticResource Grid}" >
<Grid.ColumnDefinitions>
<ColumnDefinition Width="1.3*"/>
<ColumnDefinition Width="2*"/>
</Grid.ColumnDefinitions>
<!-- rows for alignment -->
<Grid.RowDefinitions>
<RowDefinition Height="1*"/>
<RowDefinition Height="3*"/>
<RowDefinition Height="1*"/>
</Grid.RowDefinitions>
<TextBlock x:Name="Text1" Grid.Row="1" Text="{Binding Title}" Style="{StaticResource Title}" />
<TextBlock x:Name="Text2" Grid.Row="1" Text="{Binding Subtitle}" Style="{StaticResource SubTitle}" />
</Grid>
</Border>
</Grid>
</DataTemplate>
我的队友德韦恩(Dwayne)找到了解决方案,但我们花了一段时间才弄清楚。
- 为 GridViewItem 所需的宽度创建 DependencyProperties 并
高度。
- 在其 SizeChanged 事件上测量 GridView 的大小。
(我们的问题是试图获得一个不为零的值——其他事件
不会在正确的时间渲染面板。)
- 将 ItemContainer WrapGrid 的 ItemWidth 和 ItemHeight 绑定到这些 DependencyProperties。在 DataTemplate 中设置宽度和高度不起作用。
其中一个问题是一堆单独的小部件需要缝合在一起。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)