GridView每行有2个项目

时间:2014-08-10 09:15:04

标签: xaml winrt-xaml windows-phone-8.1 win-universal-app

我想在每行中显示两个GridViewItem,宽度相等。我怎么能实现呢?

我正在使用以下模板,但项目之间没有相同的空间。

 <DataTemplate x:Key="GridViewItemTestTemplate">
        <StackPanel Orientation="Horizontal">               
            <Border Background="{ThemeResource ListViewItemPlaceholderBackgroundThemeBrush}" Margin="0,9.5,0,0">
                <Image Height="79" Width="79"/>
            </Border>
            <StackPanel Grid.Column="1" Margin="14.5,0,0,0">
                <TextBlock Text="{Binding Title}" Style="{ThemeResource ListViewItemTextBlockStyle}"/>
                <TextBlock Text="Subtitle" Style="{ThemeResource ListViewItemSubheaderTextBlockStyle}"/>
            </StackPanel>
        </StackPanel>
    </DataTemplate>

这是我的gridview。

  <GridView ItemsSource="{Binding MyData}" ItemTemplate="{StaticResource GridViewItemTestTemplate}" 
                  IsSwipeEnabled="False" SelectionMode="Single" HorizontalContentAlignment="Stretch">
        </GridView>

1 个答案:

答案 0 :(得分:1)

用这个

替换你的StackPanel
<Grid Grid.Column="1" Margin="14.5,0,0,0"> 
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="*"/>
    </Grid.ColumnDefinitions>
    <TextBlock Grid.Column="0" Text="{Binding Title}" Style="{ThemeResource ListViewItemTextBlockStyle}"/>
    <TextBlock Grid.Column="1" Text="Subtitle" Style="{ThemeResource ListViewItemSubheaderTextBlockStyle}"/>
</Grid>

Grids与StackPanels动态调整自己的大小。 ColumnDefinition Width="*"是重要的部分,告诉面板设置每列的宽度以填充网格的宽度,并使每列具有相同的宽度。


编辑:这是你想要的行为吗?不像动态调整大小那么漂亮,但每行2个项目的相同宽度要求基本上强制所有项目具有相同的宽度

<GridView Width="200">
    <GridView.ItemContainerStyle>
        <Style TargetType="GridViewItem">
            <Setter Property="Width" Value="80" />
        </Style>
    </GridView.ItemContainerStyle>
    ...
</GridView>