Silverlight DataGrid重绘问题

时间:2009-07-30 21:30:39

标签: graphics silverlight-3.0 redraw

我有一个Silverlight DataGrid,它包含一个显示用户控件的模板列。用户控件具有表示处理的进度条,并且当​​处理完成时,动画隐藏进度条并显示完成的标签。

有两个实例,数据网格似乎不会重绘:

第一下, 当用户进行大量滚动时,数据网格将在用户控件进入视图时重新绘制动画,并最终到达不重绘任何内容的点。

第二下, usercontrol中有一个click事件,显示一个弹出窗口。当弹出窗口关闭时,用户控件再次无法正确重绘。

关于为什么会出现这种行为以及解决方法的任何想法?

2 个答案:

答案 0 :(得分:1)

之前的答案是正确的。我发现,如果您希望任何控件正常运行,有时您必须正确处理Loading_Row和Unloading_Row事件。在我的情况下,控件属性实际上绑定到对象以最好地工作。如果您尝试依赖动画和可见性等,您将看到奇怪的行为,但如果您将进度条绑定到一个对象,该对象在幕后维护每个项目的进度,那么每次显示该行时它将重新绑定和重绘。

答案 1 :(得分:0)

您必须了解DataGrid对于网格中的每一行都没有一个控件实例。数据源可能有数百万行,而网格不需要更多的控件实例,而不是屏幕上的实例。这意味着,例如,滚动时,它不会显示以前不可见的控件实例;它只是分配当前可见的控件,无论需要什么值来正确显示当前滚动位置。

我不知道是否有解决方法。