网格不占用 100% 的宽度

Luk*_* Vo 3 layout xaml windows-phone-8.1

我有以下 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>
Run Code Online (Sandbox Code Playgroud)

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

如何在 WPF 中将宽度设置为 100%

XAML 列定义宽度 * 不占用可用空间

但是,它仍然不起作用。网格只占用TextBlocks 和Images 需要的空间。

我做错了什么?如何让网格占据所有空间,而 OnlineIcon 位于右侧?

Rom*_*asz 5

添加:

<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
Run Code Online (Sandbox Code Playgroud)

<ListView.ItemContainerStyle>应该做的工作。

您在问题中提到了Horizo​​ntalContentAlignment,但正如我所见,您尚未在 xaml 代码中设置它。默认情况下Horizo​​ntalContentAlignment设置为Left,因此它不会占用所有可用空间。