网格不占用 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
但是,还是不行。网格仅占用 TextBlock
和 Image
所需的 space。
我做错了什么?我怎样才能让网格把所有 space 和 OnlineIcon 都放在右边?
添加:
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
在 <ListView.ItemContainerStyle>
中应该可以完成这项工作。
您在问题中提到了 HorizontalContentAlignment,但据我所知您还没有在 xaml 代码中设置它。默认情况下 HorizontalContentAlignment 设置为 Left,因此它不会占用所有可用的 space.
我有以下 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
但是,还是不行。网格仅占用 TextBlock
和 Image
所需的 space。
我做错了什么?我怎样才能让网格把所有 space 和 OnlineIcon 都放在右边?
添加:
<Setter Property="HorizontalContentAlignment" Value="Stretch"/>
在 <ListView.ItemContainerStyle>
中应该可以完成这项工作。
您在问题中提到了 HorizontalContentAlignment,但据我所知您还没有在 xaml 代码中设置它。默认情况下 HorizontalContentAlignment 设置为 Left,因此它不会占用所有可用的 space.