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

如何使ListView宽度匹配其所在Expander的宽度?

让ListView宽度与所在Expander一致的解决方法

你可以通过以下调整实现需求:

  • 保留Expander已设置的HorizontalAlignment="Stretch",确保它能填满所在容器的水平空间
  • 给ListView添加HorizontalContentAlignment="Stretch",让列表项和ListView本身都铺满父容器宽度
  • 可选:移除Expander内容区域的默认内边距,消除ListView与Expander边缘的间隙

修改后的完整代码

<Expander x:Name="expander"
          IsExpanded="False" 
          ExpandDirection="Down" 
          Header="Main" 
          HorizontalAlignment="Stretch" 
          Grid.Column="1"
          Grid.Row="1">
    <Expander.Content>
        <ListView x:Name="listView"
                  SelectionMode="None"
                  IsItemClickEnabled="True"
                  HorizontalAlignment="Stretch"
                  HorizontalContentAlignment="Stretch"
                  ItemClick="ListItemClicked"
                  ItemTemplate="{StaticResource ListViewTemplate}"/>
    </Expander.Content>
    <!-- 可选:移除内容区域默认内边距 -->
    <Expander.ContentTemplate>
        <DataTemplate>
            <ContentPresenter Margin="0"/>
        </DataTemplate>
    </Expander.ContentTemplate>
</Expander>

关键说明

  • HorizontalContentAlignment="Stretch":既让ListView自身填充Expander的内容空间,也让列表项铺满ListView的宽度
  • 若添加ContentTemplate设置Margin="0":可以消除Expander内容区域默认的内边距,让ListView完全贴合Expander边缘

另外也可以直接绑定ListView的宽度到Expander的实际宽度,这种方式更直接:

<ListView x:Name="listView"
          Width="{Binding ElementName=expander, Path=ActualWidth}"
          .../>

不过更推荐用布局属性的方式,更符合WPF/UWP的布局逻辑,避免硬绑定可能带来的适配问题。

内容的提问来源于stack exchange,提问作者joeatethebeans

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 16:55:23