Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么不';在silverlight Datagrid中以编程方式隐藏行时,我的滚动条是否正常工作?_Silverlight_Datagrid_Scrollbar - Fatal编程技术网

为什么不';在silverlight Datagrid中以编程方式隐藏行时,我的滚动条是否正常工作?

为什么不';在silverlight Datagrid中以编程方式隐藏行时,我的滚动条是否正常工作?,silverlight,datagrid,scrollbar,Silverlight,Datagrid,Scrollbar,我有一个带有自定义代码的Silverlight datagrid,它允许在左侧使用+/-按钮,并可以显示具有树结构的表。+/-按钮绑定到我的ViewModelRows上的IsExpanded属性(我称之为IsExpanded属性)。行的可见性绑定到ViewModelRows上的IsVisible属性,该属性根据是否展开所有父行来确定。很简单 这段代码工作得很好,如果我用PageUp/PageDown或箭头键在网格上上下滚动,所有正确的行都会被隐藏,所有内容都有正确的结构,我可以使用+/-按钮来播

我有一个带有自定义代码的Silverlight datagrid,它允许在左侧使用+/-按钮,并可以显示具有树结构的表。+/-按钮绑定到我的ViewModelRows上的IsExpanded属性(我称之为IsExpanded属性)。行的可见性绑定到ViewModelRows上的IsVisible属性,该属性根据是否展开所有父行来确定。很简单

这段代码工作得很好,如果我用PageUp/PageDown或箭头键在网格上上下滚动,所有正确的行都会被隐藏,所有内容都有正确的结构,我可以使用+/-按钮来播放我心中的内容。然而,右侧的垂直滚动条,虽然它开始时的大小正确,并且在折叠行然后重新展开行时平滑地滚动行,但不会返回到正确的大小

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

我认为这可能是一个与Datagrid执行行虚拟化的方式有关的bug。在我看来,当扩展状态改变时,它似乎没有正确地跟踪每一行应该有多高。有没有一种方法可以通过编程方式“戳”(读hack)它在LoadingRow或类似的东西上重新计算它的滚动条大小?我想包括一个代码示例,但是有2个c#文件和1个xaml文件,所以我想在我尝试以一种自包含的方式复制它之前,看看是否有其他人听说过这种问题。再一次,用箭头键滚动工作正常,所以我很确定底层逻辑和绑定工作正常,只是行高计算不正确。


因为我是一个新用户,它不允许我使用图像标签,所以下面是问题图片的链接:


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