Xaml Listview不正确地显示列

Xaml Listview不正确地显示列,xaml,listview,uwp,Xaml,Listview,Uwp,我有三个专栏。我设置ListView的标题以显示数据-其工作正常。我同样设置了ListView ItemTemplate,但它显示的数据不正确 <Grid> <ListView x:Name="listView" Grid.Column="0"> <ListView.HeaderTemplate> <DataTemplate>

我有三个专栏。我设置
ListView
的标题以显示数据-其工作正常。我同样设置了
ListView ItemTemplate
,但它显示的数据不正确

  <Grid>
            <ListView x:Name="listView" Grid.Column="0">
                   <ListView.HeaderTemplate>
                        <DataTemplate>
                            <Grid  Background="Gray">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition Width="*"/>
                                    <ColumnDefinition Width="*"/>
                                    <ColumnDefinition Width="*"/>
                                </Grid.ColumnDefinitions>

                                <TextBlock Text="Блюдо" Grid.Column="0"         VerticalAlignment="Top" HorizontalAlignment="Left" Margin="7,2,0,0" FontWeight="Bold"  FontSize="18" ></TextBlock>
                                <TextBlock Text="Цена" Grid.Column="1"          VerticalAlignment="Top" HorizontalAlignment="Left" Margin="7,2,0,0" FontWeight="Bold"  FontSize="18" ></TextBlock>
                                <TextBlock Text="Количество"  Grid.Column="2"   VerticalAlignment="Top" HorizontalAlignment="Left" Margin="7,2,0,0" FontWeight="Bold"  FontSize="18" ></TextBlock>
                            </Grid>
                        </DataTemplate>
                </ListView.HeaderTemplate>
                <ListView.ItemTemplate>
                    <DataTemplate>
                        <Grid >
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="*"/>
                                <ColumnDefinition Width="*"/>
                            </Grid.ColumnDefinitions>
                                <TextBlock Text="{Binding bludo}" Grid.Column="0"  VerticalAlignment="Top" HorizontalAlignment="Left" Margin="7,2,0,0"  FontSize="18" ></TextBlock>
                                <TextBlock Text="{Binding tsena}" Grid.Column="1"  VerticalAlignment="Top" HorizontalAlignment="Left" Margin="7,2,0,0"  FontSize="18" ></TextBlock>
                                <TextBlock Text="{Binding kol}"   Grid.Column="2"  VerticalAlignment="Top" HorizontalAlignment="Left" Margin="7,2,0,0"  FontSize="18" ></TextBlock>
                        </Grid>
                    </DataTemplate>
                </ListView.ItemTemplate>
            </ListView>
            </Grid>


这里的问题是,在
ListViewItem
中,它的
HorizontalContentAlignment
属性默认设置为
Left
。此属性指示控件内容的水平对齐方式。当设置为
Left
时,
ListViewItem
的内容,即
数据模板中的
网格
将左对齐。因此,
Gird
不会占据ListView的整个宽度,您将看到与屏幕截图类似的“奇怪”布局

为了清楚地看到这一点,我们可以在其默认样式中检查

<Setter Property="HorizontalContentAlignment" Value="Left"/>

您是否尝试过在项目的容器样式中设置水平内容对齐,以便项目将拉伸到全宽?我删除水平对齐。相似地
<ListView x:Name="listView" Grid.Column="0">
    <ListView.HeaderTemplate>
        <DataTemplate>
            <Grid Background="Gray">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>
                <TextBlock Grid.Column="0" Margin="7,2,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" FontSize="18" FontWeight="Bold" Text="Блюдо" />
                <TextBlock Grid.Column="1" Margin="7,2,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" FontSize="18" FontWeight="Bold" Text="Цена" />
                <TextBlock Grid.Column="2" Margin="7,2,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" FontSize="18" FontWeight="Bold" Text="Количество" />
            </Grid>
        </DataTemplate>
    </ListView.HeaderTemplate>

    <!--  Add this in your code  -->
    <ListView.ItemContainerStyle>
        <Style TargetType="ListViewItem">
            <Setter Property="HorizontalContentAlignment" Value="Stretch" />
        </Style>
    </ListView.ItemContainerStyle>

    <ListView.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="*" />
                    <ColumnDefinition Width="*" />
                </Grid.ColumnDefinitions>
                <TextBlock Grid.Column="0" Margin="7,2,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" FontSize="18" Text="{Binding bludo}" />
                <TextBlock Grid.Column="1" Margin="7,2,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" FontSize="18" Text="{Binding tsena}" />
                <TextBlock Grid.Column="2" Margin="7,2,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" FontSize="18" Text="{Binding kol}" />
            </Grid>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>