Xaml GridView项目模板全宽

Xaml GridView项目模板全宽,xaml,win-universal-app,windows-10-universal,windows-10-mobile,Xaml,Win Universal App,Windows 10 Universal,Windows 10 Mobile,我的问题是:如何将DataTemplate拉伸到屏幕的全宽。我试过很多解决办法,但都不管用。 我尝试了HorizontalContentAlignment,设置GridView.ItemContainerStyle等等,但没有任何效果。谁能解释一下我该怎么做 以下是我的部分代码: <Grid Style="{StaticResource GeneralAppBackground}"> <Grid.RowDefinitions> <RowDef

我的问题是:如何将DataTemplate拉伸到屏幕的全宽。我试过很多解决办法,但都不管用。 我尝试了
HorizontalContentAlignment
,设置
GridView.ItemContainerStyle
等等,但没有任何效果。谁能解释一下我该怎么做

以下是我的部分代码:

<Grid Style="{StaticResource GeneralAppBackground}">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="*" />
    </Grid.RowDefinitions>
    <Pivot x:Name="AccountInfoOptions" Grid.Row="1">
        <PivotItem Header="История">
            <GridView ItemsSource="{x:Bind CheckoutList}" Margin="5,0,5,0">
                <GridView.ItemTemplate>
                    <DataTemplate x:DataType="data:UserCheckout">
                        <StackPanel Orientation="Horizontal" BorderBrush="Transparent" Background="White" Padding="5" Margin="0,5,0,0">
                            <StackPanel Grid.Column="0" Orientation="Vertical" VerticalAlignment="Center" Margin="0,0,10,0">
                                <TextBlock FontSize="14" Text="{x:Bind CheckoutDate}" Foreground="#979797" />
                                <TextBlock FontSize="14" Text="{x:Bind CheckoutTime}" Foreground="#979797" />
                            </StackPanel>
                            <StackPanel Grid.Column="1" VerticalAlignment="Center">
                                <StackPanel Orientation="Horizontal">
                                    <TextBlock Text="{x:Bind CheckoutSum}" FontSize="22" FontWeight="Bold" />
                                    <Image Source="/Assets/TengeIcon.png" Width="20" Margin="5,0,0,0"/>
                                </StackPanel>
                                <TextBlock Text="{x:Bind CheckoutTitle}" TextAlignment="Center" />
                            </StackPanel>
                        </StackPanel>
                    </DataTemplate>
                </GridView.ItemTemplate>

                <GridView.ItemContainerStyle>
                    <Style TargetType="GridViewItem">
                        <Setter Property="HorizontalContentAlignment" Value="Stretch" />
                    </Style>
                </GridView.ItemContainerStyle>
            </GridView>
        </PivotItem>
   </Pivot>


使其工作的关键是更改
项spanelTemplate
。将其定义为页面资源:

<Page.Resources>
    <ItemsPanelTemplate x:Key="ItemsPanelTemplate">
        <ItemsStackPanel />
    </ItemsPanelTemplate>
</Page.Resources>
这将允许单个项目在整个宽度上延伸。您仍然需要按照Nikita的建议,将
数据模板
中的根
堆栈面板
替换为
网格

<DataTemplate x:DataType="local:UserCheckout">
    <Grid BorderBrush="Transparent" Background="White" Padding="5" Margin="0,5,0,0">
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <StackPanel Grid.Column="0" Orientation="Vertical" VerticalAlignment="Center" Margin="0,0,10,0">
            <TextBlock FontSize="14" Text="{x:Bind CheckoutDate}" Foreground="#979797" />
            <TextBlock FontSize="14" Text="{x:Bind CheckoutTime}" Foreground="#979797" />
        </StackPanel>
        <StackPanel Grid.Column="1" VerticalAlignment="Center">
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{x:Bind CheckoutSum}" FontSize="22" FontWeight="Bold" />
                <Image Source="/Assets/TengeIcon.png" Width="20" Margin="5,0,0,0"/>
            </StackPanel>
            <TextBlock Text="{x:Bind CheckoutTitle}" TextAlignment="Center" />
        </StackPanel>
    </Grid>
</DataTemplate>


您已经为内部
StackPanel
s正确设置了
Grid.Column
属性。您以前似乎试图在那里使用
网格

使其工作的关键是更改
ItemsPanelTemplate
。将其定义为页面资源:

<Page.Resources>
    <ItemsPanelTemplate x:Key="ItemsPanelTemplate">
        <ItemsStackPanel />
    </ItemsPanelTemplate>
</Page.Resources>
这将允许单个项目在整个宽度上延伸。您仍然需要按照Nikita的建议,将
数据模板
中的根
堆栈面板
替换为
网格

<DataTemplate x:DataType="local:UserCheckout">
    <Grid BorderBrush="Transparent" Background="White" Padding="5" Margin="0,5,0,0">
        <Grid.ColumnDefinitions>
            <ColumnDefinition />
            <ColumnDefinition/>
        </Grid.ColumnDefinitions>
        <StackPanel Grid.Column="0" Orientation="Vertical" VerticalAlignment="Center" Margin="0,0,10,0">
            <TextBlock FontSize="14" Text="{x:Bind CheckoutDate}" Foreground="#979797" />
            <TextBlock FontSize="14" Text="{x:Bind CheckoutTime}" Foreground="#979797" />
        </StackPanel>
        <StackPanel Grid.Column="1" VerticalAlignment="Center">
            <StackPanel Orientation="Horizontal">
                <TextBlock Text="{x:Bind CheckoutSum}" FontSize="22" FontWeight="Bold" />
                <Image Source="/Assets/TengeIcon.png" Width="20" Margin="5,0,0,0"/>
            </StackPanel>
            <TextBlock Text="{x:Bind CheckoutTitle}" TextAlignment="Center" />
        </StackPanel>
    </Grid>
</DataTemplate>


您已经为内部
StackPanel
s正确设置了
Grid.Column
属性。您以前似乎试图使用
网格

所有尝试均未成功,因为您在GridView的模板中使用了StackPanel。切换到网格。Grid take all available space,StackPanel-需要多少空间由于在GridView的模板中使用了StackPanel,所以所有尝试均未成功。切换到网格。网格占用所有可用空间,StackPanel-最终需要多少空间!如果您不介意,请详细说明为什么我们需要在应用程序资源中设置它?设置的实际作用是什么?@haikalashuha关键部分不是将模板定义为资源,而是更改
GridView
ItemsPanel
模板。默认情况下,它是
ItemsWrapGrid
。在这里,我将其更改为
ItemsStackPanel
。你可以找到更多信息。终于!如果您不介意,请详细说明为什么我们需要在应用程序资源中设置它?设置的实际作用是什么?@haikalashuha关键部分不是将模板定义为资源,而是更改
GridView
ItemsPanel
模板。默认情况下,它是
ItemsWrapGrid
。在这里,我将其更改为
ItemsStackPanel
。你可以找到更多信息。