网格不占用 100% 宽度

Grid does not take 100% width

我有以下 XAML 代码:

    <ListView Background="Blue" x:Name="lstFriends" Grid.Row="2" HorizontalContentAlignment="Stretch" >
        <ListView.ItemContainerStyle>
            <Style TargetType="ListViewItem">
                <Setter Property="HorizontalAlignment" Value="Stretch"/>
                <Setter Property="VerticalContentAlignment" Value="Stretch" />
            </Style>
        </ListView.ItemContainerStyle>

        <ListView.ItemTemplate>
            <DataTemplate>
                <Grid Background="Pink">
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="64" />
                        <ColumnDefinition Width="*" />
                    </Grid.ColumnDefinitions>

                    <Image Grid.Column="0" Source="ms-appx:///Assets/Logo.png" Margin="12" VerticalAlignment="Top"></Image>

                    <StackPanel Orientation="Vertical" Grid.Column="1">
                        <Grid>
                            <Grid.ColumnDefinitions>
                                <ColumnDefinition Width="*" />
                                <ColumnDefinition Width="auto" />
                            </Grid.ColumnDefinitions>

                            <TextBlock Grid.Column="0" Text="{Binding Path='Fullname'}" Style="{StaticResource ListViewItemSubheaderTextBlockStyle}"></TextBlock>
                            <Image Grid.Column="1" Source="{Binding Path='OnlineIcon'}" Width="16" Height="16" HorizontalAlignment="Right" />
                        </Grid>


                        <TextBlock Text="{Binding Path='Subtitle'}" Style="{StaticResource ListViewItemContentTextBlockStyle}" TextWrapping="WrapWholeWords" Margin="12"></TextBlock>
                    </StackPanel>
                </Grid>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>

我已经设置了 HorizontalContentAlignment,以及 ItemContainerStyle 这 2 篇文章:

How to set width to 100% in WPF

XAML Columndefinitions width * not taking available space

但是,还是不行。网格仅占用 TextBlockImage 所需的 space。

我做错了什么?我怎样才能让网格把所有 space 和 OnlineIcon 都放在右边?

添加:

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

<ListView.ItemContainerStyle> 中应该可以完成这项工作。

您在问题中提到了 Horizo​​ntalContentAlignment,但据我所知您还没有在 xaml 代码中设置它。默认情况下 Horizo​​ntalContentAlignment 设置为 Left,因此它不会占用所有可用的 space.