我正在试图找出一种方法来消除我在应用中的某些按钮上设置Visibility = Visible
时出现的闪烁效果。
我的应用的ListBox
包含约100件商品。我使用DataTemplate
为项目设置样式,每个ListItem
包含两个Button
元素。应用启动时,其中一个按钮元素设置为Visibile
,另一个为Collapsed
。
我也在按钮上使用OpacityMask
,使用户可以根据用户的配色方案(浅色或深色)更改颜色。
当我第一次切换按钮的可见性时 - 即。隐藏一个并显示另一个,切换犹豫了一秒,然后不透明蒙版在加载图标图像之前短暂闪烁。结果是你会看到一瞬间暂停,然后是图标周围的白色方块,然后图标会按预期显示。
在此之后,来回切换正常工作,没有延迟或闪烁。
我认为这种效果是由于图片需要加载或其他东西。有没有办法预先加载图像,以便在需要时准备就绪?
还有其他建议吗?
答案 0 :(得分:2)
如果没有repro项目,这有点难以说清楚,但这里有一些建议。
答案 1 :(得分:1)
这可能是因为您在OpacityMask
样式中使用Button
,并且您有很多Buttons
。
OpacityMask
。它将在您的UI线程上运行并导致重绘。
你可能只想为你的黑暗和光明主题创建两个不同的图像。
答案 2 :(得分:0)
如果变化实际上是人眼可见的,那么您可能没有进行适当的虚拟化。
尝试5-10项,看看问题是否仍然存在?另外,我们需要看一些代码。
答案 3 :(得分:0)
当我将网格嵌套得太深时,我遇到了类似的问题,Silverlight会做多次重绘,然后在用户控件中有太多用户控件时安顿下来。
答案 4 :(得分:0)
我建议将图像转换为XAML路径并使用Fill of PhoneBackgroundBrush或PhoneForegroundBrush来处理主题。您将获得可缩放矢量图像的好处,并且可以完全卸载到GPU