WPF中ListItem内DockPanel无法铺满宽度的问题排查
问题原因及解决方案
问题出在ListViewItem的默认布局设置上:ListView的每个列表项容器(ListViewItem)默认HorizontalAlignment是Left,且HorizontalContentAlignment不是Stretch,导致你ItemTemplate里的DockPanel只能适应自身内容宽度,无法填满整个ListView的横向空间。
解决方法
给ListView添加ItemContainerStyle,强制让每个列表项容器占满横向宽度,并让内容填满容器,同时调整DockPanel内元素的顺序(利用LastChildFill="True"让中间文本填充剩余空间):
<ListView ItemsSource="{Binding TopOverall}" Margin="10" HorizontalAlignment="Stretch"> <!-- 添加列表项容器样式 --> <ListView.ItemContainerStyle> <Style TargetType="ListViewItem"> <Setter Property="HorizontalAlignment" Value="Stretch"/> <Setter Property="HorizontalContentAlignment" Value="Stretch"/> </Style> </ListView.ItemContainerStyle> <ListView.ItemTemplate> <DataTemplate> <DockPanel HorizontalAlignment="Stretch" Background="Beige" LastChildFill="True"> <Image Source="{Binding Avatar}" DockPanel.Dock="Left" Width="30" HorizontalAlignment="Center"/> <TextBlock Text="{Binding Points}" DockPanel.Dock="Right" Foreground="Black" VerticalAlignment="Center" Margin="10,0,0,0" /> <!-- 把中间文本放在最后,让它填充剩余空间 --> <TextBlock Text="{Binding PlayerObj.Name}" Foreground="Black" Margin="10,0,0,0"/> </DockPanel> </DataTemplate> </ListView.ItemTemplate> </ListView>
内容的提问来源于stack exchange,提问作者BHuelse
相关产品推荐
相关产品推荐

