You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 00:11:15