调整大小后DataGrid垂直滚动条问题

时间:2010-07-30 09:45:30

标签: silverlight datagrid dockpanel

我在Silverlight中使用DataGrid。 如果我有足够的项目,以便垂直滚动条对于窗口的所有大小都可见,并且我重新调整窗口大小几次,则垂直滚动变得不同步。拇指变小,好像控件认为有更多的物品然后就是。当我将拇指向底部或顶部拖动时,内容开始跳跃。它一直在发生,非常令人沮丧。 DataGrid位于DockPanel内,根据窗口的大小(没有特定大小)重新调整大小

有人有什么想法吗?

4 个答案:

答案 0 :(得分:1)

我有一些类似的问题。通过在datagrid上调用UpdateLayout可以解决大多数问题。

我在dockpanel中也有一个数据网格。当我向下滚动并选择底部记录然后重新加载我的数据网格时,水平滚动条似乎覆盖了最后一条记录。并且垂直滚动条似乎尽可能地向下,并且不能进一步向下拖动。

如果我使用鼠标上的滚轮,可以进入最后一条记录。

仅当我在最大化窗口中显示我的应用程序时才会出现这种情况。

你有没有得到这个?

答案 1 :(得分:1)

我尝试了与派生DataGrid类似的方法。

不同之处在于OnApplyTemplate只会获得VerticalScrollbar的实例,并且引入了单独的公共方法来调用滚动条上的UpdateLayout()。在可能导致滚动条大小不同步(DataGrid内容调整大小等)的情况下,将明确调用此方法。

有时单独使用UpdateLayout()是不够的,所以我添加了滚动条可见性 - 尽管仍然没有在100%的情况下工作得更好

答案 2 :(得分:0)

这是datagrid中的一个错误。您可以通过从datagrid继承并在OnApplyTemplate方法上搜索滚动条并手动更新其布局来解决此问题:

public override void OnApplyTemplate()
{
    verticalScrollBar = this.GetTemplateChild("VerticalScrollbar") as ScrollBar;
    if (verticalScrollBar != null)
    {
        verticalScrollBar.UpdateLayout();
    }
}

如果这仍然不起作用,那么尝试在代码中调用OnApplyTemplate方法manouallty。

答案 3 :(得分:0)

在数据网格样式中删除垂直滚动条并按照下面的步骤

  

步骤1:使用滚动查看器对DataGridRowsPresenter进行处理

     

步骤2:使HorizantalScrollBarVisibility禁用

     

Step3:VerticalScrollBarVisibility to Auto