【问题标题】:Silverlight datagrid scrollbar size is wrongSilverlight datagrid 滚动条大小错误
【发布时间】:2010-12-17 15:39:40
【问题描述】:

我有一个包含数据网格的 Silverlight 用户控件。数据网格绑定到 ObservableCollection。用户控件显示在一个弹出窗口中,我显示该窗口是为了响应另一个控件中的某些事件

集合中大约有80个对象,我在datagrid上设置了400的固定高度,所以一次只能显示大约20个项目,并且应该显示垂直滚动条,拇指大小占控制高度的1/4左右。

然而,实际上发生的是滚动条几乎占据了整个控件高度;可能是其中的 95%。数据网格显示前 20 个项目。当我点击滚动条向下箭头时,滚动条会向下移动一点,占据滚动区域的底部 95%,并且数据网格显示最后 20 个项目。

它变得更奇怪了。如果我在网格中的项目上移动并使用鼠标滚轮向下滚动,则项目会正确滚动并且我可以查看整个列表,尽管滚动条的大小保持不变。

然后,如果我关闭弹出窗口并重新打开它,滚动条现在会以正确的高度显示,并且可以正常工作。

最后,如果我只是直接在页面上显示控件,而不是在弹出窗口中,它就可以正常工作。 这里发生了什么?!有没有其他人遇到过这个问题?救命!

更新:问题似乎是我显示弹出窗口的方式。由于各种原因,我不得不以一种有点棘手的方式来实现弹出显示,这就是造成问题的原因。

【问题讨论】:

  • 您能隔离问题并发布 xaml 和代码吗? (没有 80 行数据对象)
  • 并不容易,但正如我所尝试的那样,我离问题的根源更近了(请参阅更新),所以 danke schoën 提出建议。
  • 我看到了同样的问题,但不是在弹出窗口或 ChildWindow 中。当用户选择要加载的项目时,DataGrid 可能会加载数千行,并且用户无法轻松滚动浏览它们。约书亚:你做了什么来解决这个问题?它可能与 DataGrid 的容器有关,但不一定特定于 Popup。
  • @Zack:我从来没有真正找到问题的根源,而且我没有虚拟化网格,因为我只需要显示十几行。我在弹出窗口中显示网格,我必须显式重置 DataContext,因为我正在将弹出窗口从一个页面移动到另一个页面。很长的故事。无论如何,我在以正统方式在页面上使用网格时从未遇到过这个问题,所以我不确定我能帮助你多少。

标签: silverlight datagrid popup


【解决方案1】:

我重新编码,删除了一些粗俗的东西,问题就消失了;看我的更新。这并不是一个真正的解决方案,但我想结束这个问题以作记录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-29
    • 2011-10-06
    • 2012-06-27
    相关资源
    最近更新 更多