暂停底层网格控件的绘制

时间:2014-02-04 19:26:02

标签: wpf winapi interop controls suspend

我们正面临一个问题,我们需要暂停网格绘画一段时间。我们正在使用绑定到XPInstantFeedbacksource的devexpress DXGrid。我们需要每2-3秒刷新一次源,以获得更新的实时数据(一天大约40到5万条记录)。 然而,上述源的刷新方法异步地绑定网格,当它这样做时,它会导致某种闪烁到网格上。在内部,它在刷新之前捕获网格布局,并在后刷新阶段将其渲染回来。 我尝试了很多东西,比如在bigindataupdate和enddataupdate中包装刷新调用,但它似乎没有用。 但是,对我来说有一点感兴趣的事情是使用Win32 api暂停布局绘画一段时间并恢复它。

我发现了一些东西

How do I suspend painting for a control and its children?

适用于Winforms,但据我所知,在WPF中,各个控件共享窗口句柄。和方法调用

SendMessage(parent.Handle,WM_SETREDRAW,false,0);

使用控制句柄与WIN32交互。此外,我观察到如果我暂停窗口底层网格的布局仍然被绘制,这对我来说很奇怪。 我只是想知道,如果我正在通过暂停网格布局来避免闪烁,如果是,请提出一些方法来实现这一点。

谢谢,

Gurpreet

0 个答案:

没有答案