将listtemplate列的宽度调整为列表视图中的headertemplate列

时间:2016-04-07 10:03:40

标签: listview win-universal-app uwp-xaml

我有一个listview,我希望ItemTemplate列的宽度与HeaderTemplate列的宽度相同。我在网上尝试了很多方法,但似乎没有人工作,你能帮助我吗?谢谢!这是我的代码:

<ListView x:Name="ProductListView" Header="Products List" ItemsSource="{x:Bind ViewModel.Products}">

<ListView.HeaderTemplate>
    <DataTemplate>
        <Grid>

            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto" />
                <ColumnDefinition Width="Auto" />
            </Grid.ColumnDefinitions>

            <TextBlock x:Name="NameTextBlock" Style="{ThemeResource BodyTextBlockStyle}" Text="Name" Grid.Column="0"/>
            <TextBlock x:Name="PriceTextBlock" Style="{ThemeResource BodyTextBlockStyle}" Text="Price" Grid.Column="1"/>

        </Grid>
    </DataTemplate>
</ListView.HeaderTemplate>

<ListView.ItemTemplate>
    <DataTemplate x:DataType="m:SellingProduct">
        <Grid>

            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto" />
                <ColumnDefinition Width="Auto" />                    
            </Grid.ColumnDefinitions>

            <TextBlock Style="{ThemeResource BodyTextBlockStyle}" Text="{x:Bind Name, Mode=OneWay}" Grid.Column="0"/>
            <TextBlock Style="{ThemeResource BodyTextBlockStyle}" Text="{x:Bind Price, Mode=OneWay}" Grid.Column="1"/>

        </Grid> 
    </DataTemplate>
</ListView.ItemTemplate>

1 个答案:

答案 0 :(得分:0)

You have specify width="*" in both column definitions instead of auto and HorizontalContentAlignment value of Stretch should be Stretch

<ListView Margin="80,109,0,-109" ItemsSource="{Binding ListTest}"  x:Name="listview">
            <ListView.ItemContainerStyle>
                <Style TargetType="ListViewItem">
                    <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
                </Style>

            </ListView.ItemContainerStyle>
            <ListView.HeaderTemplate>
                <DataTemplate>
                    <Grid>

                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="*" x:Name="namecolumn"/>
                            <ColumnDefinition Width="*" x:Name="pricecolumn" />
                        </Grid.ColumnDefinitions>

                        <TextBlock x:Name="NameTextBlock" Style="{ThemeResource BodyTextBlockStyle}" Text="Name" Grid.Column="0"/>
                        <TextBlock x:Name="PriceTextBlock" Style="{ThemeResource BodyTextBlockStyle}" Text="Price" Grid.Column="1"/>

                    </Grid>
                </DataTemplate>
            </ListView.HeaderTemplate>

            <ListView.ItemTemplate>
                <DataTemplate >
                    <Grid HorizontalAlignment="Stretch">

                        <Grid.ColumnDefinitions>
                            <ColumnDefinition Width="*" />
                            <ColumnDefinition Width="*" />
                        </Grid.ColumnDefinitions>

                        <TextBlock   Text="{Binding Number}" Grid.Column="0"/>
                        <TextBlock  Text="{Binding Name}" Grid.Column="1"/>

                    </Grid>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>