Graphics Silverlight DataGrid重画问题

Graphics Silverlight DataGrid重画问题,graphics,silverlight-3.0,redraw,Graphics,Silverlight 3.0,Redraw,我有一个Silverlight DataGrid,它包含一个显示用户控件的模板列。用户控件有一个进度条来表示处理,处理完成后,动画将隐藏进度条并显示完成的标签 有两种情况下,datagrid似乎没有重新绘制自身: 首先, 当用户进行大量滚动时,当usercontrol进入视图时,datagrid将通过重新绘制动画开始,并最终到达不重新绘制任何内容的点 秒, usercontrol中有一个显示弹出窗口的click事件。当弹出窗口关闭时,usercontrol再次无法正确地重新绘制自身 关于这种行为

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

有两种情况下,datagrid似乎没有重新绘制自身:

首先, 当用户进行大量滚动时,当usercontrol进入视图时,datagrid将通过重新绘制动画开始,并最终到达不重新绘制任何内容的点

, usercontrol中有一个显示弹出窗口的click事件。当弹出窗口关闭时,usercontrol再次无法正确地重新绘制自身


关于这种行为发生的原因和解决方法,您有什么想法吗?

您必须了解,DataGrid并不是每一行都有一个控件实例。数据源可能有数百万行,而网格不需要比屏幕上显示的更多的控件实例。这意味着当你滚动时,例如,它不会显示你以前不可见的控件的实例;它只为当前可见控件指定为正确显示当前滚动位置所需的任何值


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

前面的答案是正确的。我发现,如果希望任何控件正常工作,有时必须正确处理加载行和卸载行事件。在我的例子中,控件属性实际上绑定到一个对象以获得最佳效果。如果您试图依赖动画和可见性等,您会看到奇怪的行为,但如果您将progressbar绑定到一个在幕后保持每个项目进度的对象,则每次显示该行时,它都会重新绑定和重画。

当用户在网格内单击时,您是否也有奇怪的行为?单击似乎也会调用“重新绘制”,这也会强制重新绘制动画。