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

.NET中ListBox尺寸调整及超出窗口高度问题解决

ListBox无法滚动且内容超出窗口的解决方案

你的核心问题出在StackPanel的布局特性——StackPanel会沿排列方向无限扩展,不会限制子元素的可用空间,导致ListBox的MaxHeight绑定无法正确计算可用高度,同时外层StackPanel绑定DockPanel高度也会忽略内部TextBlock的占用空间,让ListBox高度超出窗口。

最优解决方案:替换外层StackPanel为Grid

Grid会根据父容器的可用空间自动分配子元素布局,完美适配窗口自适应需求:

<DockPanel x:Name="DockPanel_Color">
    <StackPanel DockPanel.Dock="Right">
        <Label Content="Couleur RGB"/>
        <Border x:Name="Border_SelectedColor" Background="red" Width="100" Height="100" BorderThickness="2" BorderBrush="Black" CornerRadius="10"/>
    </StackPanel>
    <Grid Margin="5">
        <Grid.RowDefinitions>
            <RowDefinition Height="Auto"/> <!-- 自动适配TextBlock的高度 -->
            <RowDefinition Height="*"/> <!-- 剩余空间全部分配给ListBox -->
        </Grid.RowDefinitions>
        <TextBlock Grid.Row="0">Couleurs</TextBlock>
        <ListBox x:Name="ListBox_Couleurs" Grid.Row="1" SelectionChanged="ListBox_Couleurs_SelectionChanged"/>
    </Grid>
</DockPanel>

为什么之前的尝试无效?

  • 不设置高度:StackPanel会随ListBox内容无限拉伸,ListBox不会触发滚动
  • 用ScrollViewer包裹:外层StackPanel仍会无限延伸,ScrollViewer也会被拉满,无法显示滚动条
  • 绑定StackPanel高度:StackPanel的ActualHeight会随内容无限增长,ListBox的MaxHeight也会随之无限放大

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 16:35:19