silverlight - 为什么在 silverlight Datagrid 中以编程方式隐藏行时我的滚动条不能正常工作?

标签 silverlight datagrid scrollbar

我有一个带有自定义代码的 Silverlight 数据网格,允许在左侧使用 +/- 按钮,并且可以显示具有树结构的表格。 +/- 按钮绑定(bind)到我的 ViewModelRows 上的 IsExpanded 属性,我这样调用它们。行的可见性绑定(bind)到 ViewModelRows 上的 IsVisible 属性,该属性根据是否展开所有父行来确定。够直截了当。

这段代码工作正常,因为如果我使用 PageUp/PageDown 或箭头键上下滚动网格,所有正确的行都被隐藏并且所有内容都具有正确的结构,我可以使用 +/- 按钮玩我的心内容。但是,右侧的垂直滚动条虽然从正确的大小开始并且平滑地滚动行,但当我折叠行然后重新展开它们时,它不会恢复到正确的大小。

滚动条通常仍然可以移动来滚动整个集合,但是因为它太大了,一旦滚动条移动到底部,还有更多的行要经过,有点像生硬地一直射到底部,或者有时根本无法滚动。这很难描述,所以我附上了一个屏幕截图,上面画了黑线以显示滚动条长度的差异,即使两个网格扩展的行数相同。

我认为这可能是与 Datagrid 对行进行虚拟化的方式相关的错误。在我看来,当扩展状态发生变化时,它没有正确跟踪每一行应该有多高。有没有办法以编程方式“戳”(阅读黑客)它以重新计算它在 LoadingRow 或类似丑陋的东西上的滚动条大小?我会包含一个代码示例,但有 2 个 c# 文件和 1 个 xaml 文件,所以在我尝试以独立的方式使其可重现之前,我想看看是否有其他人听说过此类问题。再一次,使用箭头键滚动效果很好,所以我很确定底层逻辑和绑定(bind)正在工作,只是行高计算不正确存在一些问题。


由于我是新用户,它不允许我使用图像标签,所以这里是问题图片的链接:

http://img210.imageshack.us/img210/8760/messedupscrollbars.png

最佳答案

根据我今天读到的内容,这是一个已知问题(显然在尚未发布的 Silverlight 4 中仍然是一个问题):

http://forums.silverlight.net/forums/p/153997/343790.aspx

关于silverlight - 为什么在 silverlight Datagrid 中以编程方式隐藏行时我的滚动条不能正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1262934/

相关文章:

c# - 如何使 WPF 数据网格列从一开始就自动调整大小,以便它们都可见?

Delphi - ADODataSet 子集

c# - 具有自定义样式的 ScrollViewer 在拖动时不滚动

html - 带有CSS的水平滚动条

c# - 创建自定义 DataGrid 的 ItemsSource

wpf - 如何使 ItemsControl 根据运行时类型选择不同的模板

c# - 如何从客户项目创建类的对象

silverlight - 有没有办法判断某些代码是否在 Silverlight 单元测试框架内执行?

jquery - 如何实现位于当前 View 底部的水平滚动条?

silverlight - 是否可以从网页启动Silverlight 4 OOB应用程序?