在我的XAML UI中,我有4个画布面板。 在一次只有一个是可见的而其他的是崩溃的。 我在显示画布时使用变换来获得水平滑动效果。
我有两种方法可以做到这一点:
选项1:
当我想转到画布时,我会将所有其他3幅画布移出屏幕,因为我不知道哪一个当前是活动的。这样做的好处是我只有4个动画,每个画布一个。
选项2:
我定义了从另一个特定画布转到特定画布的新动画。在这种情况下,我不需要移动所有三个画布,只需要移动一个。但是我需要创建12个动画,每个画布3个。
我认为选项1是内存高效的,因为只有4个动画实例,但存在CPU性能开销。
选项2具有CPU效率,但由于12个动画实例而导致内存开销。
我更喜欢哪个选项?
谢谢, 图莎尔
答案 0 :(得分:3)
出于兴趣,您是否考虑过使用VisualStateManager
?通过样式定义'OnScreen'和'OffScreen'VisualState
并将其应用于每个画布,您只需要编码一次,让VisualStateManager
调用适当的动画。通过使用VisualStateManager.GoToState()
,这意味着您不需要12个动画实例,并且您不需要在每次状态更改时调用4个动画。两全其美?
如果您需要更多信息,我可以尽快提供一些示例代码。
答案 1 :(得分:1)
我知道这在很大程度上是一个非答案......但是因为它始终与性能有关,所以你应该对这两种方法进行一些分析和测试。您可能会发现这两种方法的相对优点或缺点可以忽略不计,在这种情况下,您应该选择更易于维护且更易于编码的任何选项(可能是选项1): - )