Windows 8 - XAML - 将网格置于ListView中

Ram*_*rma 4 c# xaml windows-8 windows-store-apps

在我的Windows 8商店的XAML/C#应用程序中,我正在尝试创建一个ListView,其中每个ListItem是一个水平网格,所以我使用下面的XAML:

  <ListView Name="ResultsView">
    <ListView.ItemTemplate>
      <DataTemplate>
        <Grid>
          <Grid.ColumnDefinitions>
            <ColumnDefinition Width="1*" />
            <ColumnDefinition Width="4*" />
            <ColumnDefinition Width="4*" />
          </Grid.ColumnDefinitions>
          <TextBlock Text="{Binding BestRank}" Grid.Column="0"/>
          <TextBlock Text="{Binding PlayerName}" Grid.Column="1"/>
          <TextBlock Text="{Binding BestScore}" Grid.Column="2"/>
        </Grid>
      </DataTemplate>
    </ListView.ItemTemplate>
  </ListView>
Run Code Online (Sandbox Code Playgroud)

当我运行这个程序时,listview包含它所绑定的列表中的所有项目(通过代码隐藏).但是,在每个列表项中,所有三列的内容一起显示,它们之间没有任何空格.当我在listview之外创建一个类似的网格时,它显示正常并占据屏幕的整个宽度,并将其划分为上面XAML中指定的三列之间.

我究竟做错了什么?

cod*_*lla 12

我相信这个问题是ItemContainerStyle有需求HorizontalContentAlignmentStretch.尝试将此添加到ListView:

<ListView.ItemContainerStyle>
            <Style TargetType="ListViewItem">
                <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
            </Style>
        </ListView.ItemContainerStyle>
Run Code Online (Sandbox Code Playgroud)