我正在使用新的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;各州,但到目前为止它还没有按预期运作。