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>
调整说明
- 把
GridView替换为更适合单行垂直列表的ListView控件,天然适配单选列表的使用场景 - 项容器改用
StackPanel设置垂直方向,所有项会严格按从上到下的顺序排列,不会自动换列 - 移除了
IsTapEnabled="False"配置,恢复控件的交互能力 - 显式开启了滚动查看器的垂直滚动配置,内容超过160px的容器高度时会自动出现滚动条
- 调整对齐方式为
Stretch,充分利用容器的宽高空间,避免滚动区域计算异常
内容的提问来源于stack exchange,提问作者Saim Saddat
相关产品推荐
相关产品推荐

