大小GridViewItems来填充GridView?

时间:2013-02-16 01:19:41

标签: xaml windows-runtime winrt-xaml

我有这个问题的反面: How do I dynamically size a GridView Item?

我有一个包含两行四列的GridView。期望的行为是GridViewItems填充单元格,我无法找到一种方法来做到这一点。 GridViewItem是一个包含一些其他内容的Grid,我将其作为DataTemplate。我可以为一个项目提供宽度和高度,但这只适用于一个分辨率,我需要项目是动态和比例的,所以如果它们显示在不同的设备上,它们将继续是2行4项。

在另一个页面上,我有一个具有相同布局的静态网格,每个单元格中都包含矩形。这些会自动拉伸,我已经尝试在DependencyProperties中存储它们的宽度和高度,我得到了Rectangle的SizeChanged,但我无法弄清楚如何绑定它们。

页面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:

                <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>

desired layout of gridviewitems

1 个答案:

答案 0 :(得分:1)

我的队友Dwayne有解决方案,但我们需要一段时间来解决这个问题。

  • 为GridViewItem创建所需宽度的DependencyProperties 高度。
  • 在SizeChanged事件上测量GridView的大小。 (我们的问题是试图得到一个不为零的值 - 其他事件 不会在适当的时候呈现面板。)
  • 将ItemContainer WrapGrid的ItemWidth和ItemHeight绑定到这些DependencyProperties。在DataTemplate中设置宽度和高度将不起作用。

其中一个问题是需要拼接在一起的一堆小块。