WPF DataGrid绑定MySQL数据后垂直滚动条无法滚动
问题根因
DataGrid无法滚动的核心原因是你在XAML中给控件设置了IsHitTestVisible="False"属性。
该属性会禁用控件的所有命中测试逻辑,鼠标滚轮滚动、拖动滚动条滑块、点击等所有交互事件都无法传递到DataGrid内部的ScrollViewer元素,因此所有滚动操作都不会生效。你看到滚动条和滑块正常显示,只是布局渲染逻辑正常运行的结果,交互层已经被该属性完全拦截,和后端数据读取逻辑、ScrollViewer或StackPanel的配置没有关联。
修复方案
直接删除DataGrid标签内的IsHitTestVisible="False"属性即可,WPF中该属性的默认值为True,不需要额外显式声明。如果需要保留显式设置,将属性值改为True也可实现相同效果。
修改后的DataGrid核心代码示例:
<DataGrid x:Name="DataTable" Grid.Row="1" HeadersVisibility="None" Background="Transparent" VerticalScrollBarVisibility="Auto" MaxHeight="231" GridLinesVisibility="Horizontal" HorizontalGridLinesBrush="White" HorizontalScrollBarVisibility="Disabled" RowBackground="Transparent" AlternatingRowBackground="Transparent" CanUserResizeColumns="False" CanUserAddRows="False" CanUserResizeRows="False" CanUserDeleteRows="False" CanUserReorderColumns="False" CanUserSortColumns="False" AutoGenerateColumns="False" IsReadOnly="True" ItemsSource="{Binding }" Foreground="White" BorderBrush="{x:Null}" FontWeight="Bold" FontSize="16"> <DataGrid.Columns> <DataGridTextColumn Header="Kürzel" Binding="{Binding kuerzel}" Visibility="Collapsed" CanUserResize="False" /> <DataGridTextColumn Header="Vorname" Width="152" Binding="{Binding firstname}" CanUserResize="False" /> <DataGridTextColumn Header="Nachname" Width="152" Binding="{Binding lastname}" CanUserResize="False" /> <DataGridTextColumn Header="Geburtstag" Binding="{Binding birthdate}" Visibility="Collapsed" CanUserResize="False" /> <DataGridTextColumn Header="Arbeitsstunden" Width="152" Binding="{Binding timeWorked}" CanUserResize="False" /> </DataGrid.Columns> </DataGrid>
额外优化提示:你后端的
FillGrid方法中,cnn.Close()是多余代码,using代码块会在作用域结束时自动释放并关闭数据库连接,不需要手动调用。
内容的提问来源于stack exchange,提问作者Jannes
相关产品推荐
相关产品推荐

