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

如何让StackPanel中控件间距自适应窗口大小?

解决方案:用Grid替代StackPanel实现均分间距且铺满窗口

StackPanel的Spacing属性确实只接受固定数值,没法实现你要的「自动均分间距+铺满窗口」效果,换用Grid布局就能搞定,而且完全兼容Uno Platform:

<Grid HorizontalAlignment="Stretch">
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition Width="*"/>
        <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions>

    <TextBlock Grid.Column="0" Text="Thing that is number 1"/>
    <TextBlock Grid.Column="2" Text="Thing 2"/>
    <TextBlock Grid.Column="4" Text="Number 3"/>
    <TextBlock Grid.Column="6" Text="Thing that 4"/>
</Grid>

原理说明:

  • Grid设置HorizontalAlignment="Stretch"会自动铺满窗口宽度
  • 每个文本块放在Width="Auto"的列里,保持自身原始尺寸
  • 文本块之间插入Width="*"的列,这些列会自动均分窗口剩余空间,让所有间距完全一致

如果你的元素数量是动态的,可以在后台代码里循环生成列和元素,或者用ItemsControl配合自定义的ItemsPanelTemplate实现动态布局,核心思路还是用Grid的星号列分配间距。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:10:06