ScrollViewer在15063 SDK中闪烁的解决方法?

时间:2017-04-22 17:47:44

标签: c# xaml uwp windows-10 windows-10-universal

我正在使用新的15063 SDK处理我的应用的更新,并且我注意到ScrollViewer的新默认模板在ListView加载某些内容时会出现恼人的闪烁1}},以及点击列表中的项目并导航到另一个页面时。

我没有更改列表或滚动条中的任何内容,就这两个控件而言,我只是将项目更新为新SDK并重新编译应用程序。

这是一个简短的视频,用于说明问题:ScrollViewer glitch

您可以看到垂直滚动条(其可见性模式设置为“自动”)出现,然后每次导航回主页并加载内容时都会消失几分之一秒。这不是主页的问题:如果我导航到另一个页面然后导航到“组”页面(例如),问题也会出现在“组”页面中。它出于某种原因基本上每两页出现一次(并且总是在其他页面/控件中加载新内容时)。

有没有办法解决这个问题?

到目前为止,我想出的是:

public static void FadeInScrollBarWithDelay([NotNull] this ListView listView, int delay = 800)
{
    if (delay <= 0) throw new ArgumentOutOfRangeException("The delay must be greater than zero");
    ScrollBar scroller = listView.FindChild<ScrollBar>("VerticalScrollBar");
    if (scroller == null) return;
    scroller.Opacity = 0;
    ScrollViewer.SetVerticalScrollBarVisibility(listView, ScrollBarVisibility.Auto);
    scroller.StartXAMLTransformFadeAnimation(0, 1, 200, delay, EasingFunctionNames.Linear);
}

注意StartXAMLTransformFadeAnimation只是来自this library的一种方法,可为元素不透明度创建并启动DoubleAnimation

基本上,我将每个VerticalScrollBarVisibility中的ListView属性设置为Hidden,然后调用此方法,在加载内容后立即淡出垂直条。但它仍然没有完全解决问题,因为如果我使用触摸屏点击列表中的项目,垂直滚动条会再次闪烁。

我希望我不是唯一一个面对此问题的新SDK,感谢您的帮助!

修改:我将CustomVisualStateManager附加到ScrollViewer控件,并发现正如预期的那样,当闪烁发生时,控件从{{1}跳出视觉状态到NoIndicator(或MouseIndicator)状态并立即回到TouchIndicator状态,这就是闪烁发生的原因。

每次单击NoIndicator控件中的项目时,以及在ListView内加载内容时都会发生这种情况。

有关如何解决此问题的任何想法?我试图想出一个ScrollViewer,它使用一个计时器和一个延迟来在给定的时间阈值后应用状态,以便能够跳过这些&#34;假的&#34;各州,但到目前为止它还没有按预期运作。

0 个答案:

没有答案