问题描述
|
在我的XAML UI中,我有4个画布面板。
一次只有一个可见,其他的则崩溃了。
我正在使用transform在显示画布时具有水平滑动效果。
我有两个选择可以做到这一点:
选项1:
当我想转到画布时,我将所有其他3个画布移出屏幕,因为我不知道当前哪个画布处于活动状态。这样做的好处是我只有4个动画,每个画布一个。
选项2:
我定义了从另一个特定画布转到特定画布的新动画。在这种情况下,我不需要移动所有三个画布,而只需移动一个。但是然后我需要创建12个动画,每个画布3个。
我认为选项1是内存有效的,因为那里只有4个动画实例,但是有cpu性能开销。
选项2是cpu有效的,但是由于12个动画实例而导致内存开销。
我应该选择哪个选项?
谢谢,
杜沙尔
解决方法
只是出于兴趣,您是否考虑过使用
VisualStateManager
?通过通过样式定义\'OnScreen \'和\'OffScreen \'VisualState
,并将其应用于每个Canvas,您只需要编码一次,让VisualStateManager
通过使用VisualStateManager.GoToState()
调用合适的动画即可。意味着您不需要12个动画实例,并且每个状态更改都不需要调用4个动画。两全其美?
如果您需要更多信息,我可以很快提供一些示例代码。
,您似乎已经很好地考虑了每种方法的含义。不幸的是,只有您可以回答您提出的问题。如果内存与应用程序有关,则应选择选项1。但是,如果应用程序对CPU敏感,则应选择选项2。
我知道这基本上是一个无法解决的问题,但是与性能一样,您应该对这两种方法进行概要分析和测试。您可能会发现两种方法的相对优缺点都可以忽略不计,在这种情况下,您应该选择更可维护且更容易编码的任何选项(可能是选项1):-)