wpf datagrid 水平滚动错误?

Posted

技术标签:

【中文标题】wpf datagrid 水平滚动错误?【英文标题】:wpf datagrid horizontal scrolling bug? 【发布时间】:2012-06-27 09:35:17 【问题描述】:

我注意到我在 WPF 中使用我的DataGrid 时,当我设置SelectionMode="Extended" 时,水平滚动变得非常不完整/奇怪。某种“全选”类型的按钮在网格的左上角迅速出现/消失,并且标题和列在滚动时来回跳跃。滚动条本身也在滚动时来回跳跃。滚动确实有点作用,但是 while 滚动的行为看起来确实很麻烦。

我注意到如果我设置SelectionMode="Single",那么问题就会消失,但我想使用SelectionMode="Extended"。这是我的数据网格的代码:

<DataGrid x:Name="dataGrid" SelectionMode="Extended" SelectionUnit="Cell" 
    HeadersVisibility="Row,Column" RowHeaderWidth="0"
    ItemsSource="Binding ElementName=dataPager, Path=PageView" 
    CanUserReorderColumns="False"
    CanUserAddRows="False" CanUserDeleteRows="False" CanUserResizeRows="False">

有人知道如何解决这个问题吗?提前致谢!

【问题讨论】:

无法重现您的问题。当 DataGrid 中的选择发生变化时,您是否在做某事(在代码/VM 中)?或者你没有提到的任何其他事情。 不对代码中的数据网格做任何事情,只是在视图模型中处理数据源。如果您无法重现该问题,则它必须与 datagrid/datagridcolumnheader 的样式有关,尽管我在那里没有看到任何奇怪的东西...... 【参考方案1】:

所以我想出了解决问题的方法。我认为是“全选”按钮导致它在滚动过程中出现/消失的方式出现问题,所以我研究了是什么使该按钮出现以及如何使其不出现。原来问题出在行标题上,所以我改变了:

HeadersVisibility="Row,Column"

到:

HeadersVisibility="Column"

在标题可见性中删除行部分后,“全选”按钮停止出现,并且按预期进行滚动。仍然不完全确定为什么“全选”按钮会以这种方式出现/消失......

【讨论】:

这只是救了我谢谢。对于任何有类似问题的人,我发现FrozenColumnsCount 似乎也是部分原因。在此处查看我的 SO 问题:***.com/questions/17466674/…

以上是关于wpf datagrid 水平滚动错误?的主要内容,如果未能解决你的问题,请参考以下文章

wpf datagrid怎么得到第一项焦点?然后在方向键上下移动

WPF Datagrid行上下文菜单-禁用菜单项[关闭]

wpf datagrid 滚动条如何设置宽度和颜色

WPF DataGrid自动选择复选框错误?

WPF拖动DataGrid滚动条时内容混乱的解决方法

WPF实现两个DataGrid列表的滚动条同步