XAML缓存行为在Windows 8.1预览版中是否发生了更改



我有一个由多个缩放箭头组成的重复XAML动画,它每秒更新几次,在Silverlight、Win8、WinPhone7和WinPhone8上运行良好。但现在,在Windows8.1预览版中,我得到了以下意想不到的行为:

  1. 通过所有缩放大小的一个循环,动画箭头的初始显示是正确的
  2. 在动画的第二次和随后的重复中,箭头被缩放到正确的大小,但显然都是箭头的低rez缓存位图的放大版本。这看起来很可怕
  3. 如果我切换应用程序并返回到我的应用程序,初始显示是正确的,然后恢复到糟糕的低rez版本(换句话说,重复行为1和2)

我认为这是由于Win8.1预览版中UIElement缓存行为发生了一些变化,但在这方面找不到任何变化的文档。

UiElement.CacheMode似乎是一个很可能实现修复的候选者,但我想知道这种行为是故意的,还是需要在最终版本中更改代码。

回答我自己的问题:解决Windows 8.1预览XAML中的错误/功能的方法是将以下内容添加到与有问题的UIElement关联的TransformGroup中:

rotateGroup.CacheMode = null;

我完全不知道为什么这个改变是必要的。添加上述黑客攻击之前的问题的进一步描述:

如果箭头大小的变化很小,则会出现错误。如果比例因子在较大的跳跃中发生变化,那么错误就会消失,箭头也会正确显示

相关内容

最新更新