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

XAML GridView项无法垂直排列且滚动失效问题求助

问题根因

  • 你当前使用WrapGrid作为GridView的项容器,Orientation="Vertical"的WrapGrid会先填满分配的垂直高度,之后新增的项会自动换到下一列展示,就是你遇到的满3项后横向显示的问题
  • 滚动失效有两个原因:一是你给GridView设置了IsTapEnabled="False",会禁用所有交互能力包括滚动;二是HorizontalAlignment="Left"会让GridView宽度自动适配内容,也会干扰滚动区域的正常计算

修复方案

直接替换你的GridView代码段为以下内容即可:

<ListView x:Name="DayListView" Grid.Row="2"
          ItemsSource="{Binding Days, Mode=OneWay}"
          HorizontalAlignment="Stretch"
          VerticalAlignment="Stretch"
          ScrollViewer.VerticalScrollMode="Enabled"
          ScrollViewer.VerticalScrollBarVisibility="Auto">
    <ListView.ItemTemplate>
        <DataTemplate>
            <RadioButton Height="19" FontFamily="Segoe UI Regular" FontSize="10" Content="{Binding Name, Mode=OneWay}" GroupName="Day" Checked="RadioButton_Checked" IsChecked="{Binding IsChecked, Mode=TwoWay}"/>
        </DataTemplate>
    </ListView.ItemTemplate>
    <ListView.ItemsPanel>
        <ItemsPanelTemplate>
            <StackPanel Orientation="Vertical"/>
        </ItemsPanelTemplate>
    </ListView.ItemsPanel>
</ListView>

调整说明

  1. 把GridView替换为更适合单行垂直列表的ListView控件,天然适配单选列表的使用场景
  2. 项容器改用StackPanel设置垂直方向,所有项会严格按从上到下的顺序排列,不会自动换列
  3. 移除了IsTapEnabled="False"配置,恢复控件的交互能力
  4. 显式开启了滚动查看器的垂直滚动配置,内容超过160px的容器高度时会自动出现滚动条
  5. 调整对齐方式为Stretch,充分利用容器的宽高空间,避免滚动区域计算异常

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 20:54:07