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