WPF DataGrid水平滚动条没有显示

Val*_*ale 17 c# wpf scroll .net-4.0

我创建了4列简单的DataGrid,它超出了DataGrid的范围,并且没有显示水平滚动条.我尝试将宽度设置为每列,但没有任何改变.这是我的XAML:

<Window x:Class="WPFTest.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Window1" Height="300" Width="300">
    <Grid>
        <DataGrid Height="200" Width="200" HorizontalScrollBarVisibility="Visible">
            <DataGrid.Columns>
                <DataGridTextColumn Header="Column 1" />
                <DataGridTextColumn Header="Column 2" />
                <DataGridTextColumn Header="Column 3" />
                <DataGridTextColumn Header="Column 4" />
            </DataGrid.Columns>
        </DataGrid>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

这就是我得到的:

在此输入图像描述

我也尝试用ScrollViewer包装DataGrid.没有.如何显示滚动条?

小智 19

我也非常不喜欢这种行为,因为我使用标题过滤器.我的"hack"比上面容易得多:简单地将数据网格放在一个新的ScrollViewerwith HorizontalScrollBarVisibility=Auto和VerticalScrollBarVisibility=Disabled(DataGrid已经处理好一个).像这样:

<ScrollViewer HorizontalScrollBarVisibility="Auto"
              VerticalScrollBarVisibility="Disabled">
    <DataGrid>
        ...
    </DataGrid>
</ScrollViewer>
Run Code Online (Sandbox Code Playgroud)

当然,这是对页面的更多控制,但比上面的hacky代码容易得多.到目前为止,我还没有找到一种方法让数据网格自动执行此操作.

此解决方案的副作用可能是隐藏垂直滚动条,直到您向右滚动.

  • 警告 - 如果要在列调整大小时显示水平滚动条,请不要对数据网格列宽使用* (4认同)
  • 这会导致渲染dataGrid时出现很大的性能问题 (2认同)
  • 使用此解决方案,即使列表中有项目,它也始终使用外部水平滚动条.这意味着滚动的垂直滚动条不在视野范围内,这实际上是不可行的. (2认同)

Dam*_*cus 3

我认为当Datagrid为空时,ScrollViewer不会处理任何事情。尝试通过添加 来填充列ItemsSource,因此应该出现滚动:)