Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Windows8-XAML-将网格放入ListView_C#_Xaml_Windows 8_Windows Store Apps - Fatal编程技术网

C# Windows8-XAML-将网格放入ListView

C# Windows8-XAML-将网格放入ListView,c#,xaml,windows-8,windows-store-apps,C#,Xaml,Windows 8,Windows Store Apps,在适用于Windows 8应用商店的XAML/C#应用程序中,我试图创建一个列表视图,其中每个列表项都是一个水平网格,因此我使用下面的XAML: <ListView Name="ResultsView"> <ListView.ItemTemplate> <DataTemplate> <Grid> <Grid.ColumnDefinitions> <

在适用于Windows 8应用商店的XAML/C#应用程序中,我试图创建一个列表视图,其中每个列表项都是一个水平网格,因此我使用下面的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>

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


我做错了什么

列表框和网格都应具有HorizontalContentAlignment=“Stretch”

指定网格的宽度或将样式作为资源添加到网格中。在
行之后添加此项

 <Grid.Resources>
            <Style TargetType="TextBlock">
                <Setter Property="TextAlignment" Value="Right" />
                <Setter Property="Margin" Value="4" />
                <Setter Property="VerticalAlignment" Value="Center" />
            </Style>
 </Grid.Resources>


这将为网格中的所有文本块设置属性。您可能只需要Margin属性。还考虑属性宽度和填充。您可以通过将任何给定TextBlock上的属性设置为样式中的非默认值来覆盖此默认值。

据我所知,默认ItemsPanelTemplate是堆栈面板,这意味着它不会自动提供其子级拉伸行为。您需要更改它,我将在手机上编辑,等待笔记本电脑启动:)

编辑:

呃,不要忽略我想到的
ItemsControl
,JBrooks是正确的,只要确保
HorizontalContentAlignment
设置为
Stretch
,因为默认设置为
Left

<ListView Name="ResultsView" HorizontalContentAlignment="Stretch">


这应该可以正常工作-任何使用
XXXXContentAlignment
的控件似乎默认为
Left
,我认为这与其他控件(例如
Grid
)有点不一致。

实际上这不是Listview的问题。问题是你把它放在哪里?将列表视图放入网格中。应该行得通

<ListView Name="ResultsView" 
              HorizontalContentAlignment="Stretch">
        <ListView.ItemTemplate>
            <DataTemplate>
                <Grid Background="Yellow">
                    <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>

我认为问题在于
ItemContainerStyle
需要
横向内容对齐
拉伸
。尝试以下操作将其添加到ListView:

<ListView.ItemContainerStyle>
            <Style TargetType="ListViewItem">
                <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
            </Style>
        </ListView.ItemContainerStyle>


但这仍然不符合我在columndefinitions中指定的宽度。我希望我的网格能够覆盖整个屏幕宽度,这样应该可以很好地工作——假设您的DataTemplate是正常的,那么您不需要更改任何样式。我已将您的XAML粘贴到VS2010中,然后设置了
HorizontalContentAlignment
,对我来说效果很好,我正在尝试使用Windows 8应用商店应用程序。你在为WPF试一试吗?VS2010不支持Windows 8应用商店应用。@有时开发者不,我在做Silverlight,这类东西“应该”是相同的。看起来它不是相同的,它已经在网格中了。它是多行网格中的一行。能否确保列表视图占用了全部空间?可能是给一些背景颜色,你可以检查一下..是的,我验证过了。列表视图确实占据了整个空间您确定这是针对Windows 8应用商店应用程序的吗?我收到以下错误:XamlCompiler错误WMC0011:元素“RelativeSource”上的未知成员“AncestorType”,我想对于windows 8应用商店应用程序,listview的内容必须使用非拉伸主机…我认为它在SL/WPF/Win8中是一致的