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

在两种情况下,数据网格似乎不会重新绘制自身:

第一的, 当用户进行大量滚动时,数据网格会在用户控件进入视图时开始重绘动画,最后达到不重绘任何内容的程度。

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

关于为什么会发生这种行为以及解决方法有什么想法吗?

有帮助吗?

解决方案

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

其他提示

您必须了解 DataGrid 并不为网格中的每一行提供一个控件实例。数据源可能有数百万行,而网格不需要的控件实例数量不超过屏幕所能容纳的数量。这意味着,例如,当您滚动时,它不会显示以前不可见的控件实例;它只是为当前可见的控件分配正确显示当前滚动位置所需的任何值。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top