在ScrollViewer中自动滚动网格会产生闪烁/脉冲效果

时间:2019-02-19 15:12:40

标签: wpf vb.net grid scrollviewer

我正在开发一个不断滚动显示的信息,该信息与制造工厂中从涂漆线脱落的零件有关。该信息会定期刷新,并在水平放置的70英寸液晶显示器上显示给员工(我正在使用标准的Vizio 70英寸4K液晶电视进行测试)。这是一个快速屏幕截图,仅供参考...

Example of Display

我在VB.net中使用WPF表单,并创建了一系列带有嵌入式文本框的网格,以构成屏幕快照中看到的所有各种单元格。这是在运行时完成的,因为它需要动态。为了使整个事情自动“滚动”,主网格嵌入在scrollviewer控件中,我使用计时器每X毫秒滚动一次来递增scrollviewer的VerticalOffset属性浏览所有信息,直到到达末尾。

我应该提到,整个网格通常由少于100条信息组成。

此解决方案的所有工作都很好,除了当网格自动滚动通过我最终到达的行会产生这种脉冲/闪烁效果时,在大屏幕上运行程序时尤其如此。我已经读过有关双缓冲的信息,但这已经是WPF格式,因此我不确定它是否适用于这里,或者不确定是否可以应用于scrollviewergrid控件。这是一个简短的视频,显示了我在说什么(请注意:每隔两行就有意暂停滚动)...

Youtube Video Example

有什么想法可以使我在滚动时最大程度地减少这种影响?

现在我正在设置一个计时器,每30毫秒运行一次...

Dim scrollTimer As DispatcherTimer = New DispatcherTimer()    
AddHandler scrollTimer.Tick, AddressOf scrollTimer_Tick    
scrollTimer.Interval = New TimeSpan(0, 0, 0, 0, 30)     
scrollTimer.Start()

然后将垂直偏移量滚动1 ...

scrlPaintLineStatus.ScrollToVerticalOffset(scrlPaintLineStatus.VerticalOffset + 1)

谢谢。

0 个答案:

没有答案