我正在使用底部的地图和菜单创建反应式UI。我的地图使用内置的windows phone bing maps控件,下方有一个用户控件。
我的XAML看起来像这样:
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Controls:Map x:Name="map"/>
<Border Background="{StaticResource PhoneChromeBrush}"
Grid.Row="1">
<telerikPrimitives:RadTransitionControl Grid.Row="1">
<views:OverviewPage/>
</telerikPrimitives:RadTransitionControl>
</Border>
</Grid>
我的动画看起来像这样。我已经花了很长时间来展示问题。
DoubleAnimation animation = new DoubleAnimation() { Duration = TimeSpan.FromSeconds(10), To = 480, From = 0 };
Storyboard.SetTarget(animation, map);
Storyboard.SetTargetProperty(animation, new PropertyPath(HeightProperty));
Storyboard storyboard = new Storyboard();
storyboard.Children.Add(animation);
storyboard.Begin();
现在,如果我将地图控件换成其他东西,请说边框。一切都按照你的预期运作,动画很流畅。如果我使用地图,问题是我的UI更新只有每半秒左右。我在Lumia 1520上遇到了这个滞后现象,我无法想象它在低端设备上有多糟糕。
我正在寻找一些方法来改善这个动画或其他替代方案的性能。有没有人以前尝试过这个或者你知道一个好的解决方案吗?
答案 0 :(得分:0)
这个问题是,每次移动地图或调整大小时,地图都必须进行一系列计算。当您为地图设置动画时,地图的大小会在很短的时间内更新一次,导致地图重复计算所有内容。由于所涉及的所有数据和计算,地图控件通常倾向于重量控制。应避免制作地图大小的动画,尤其是在功能较弱的设备上,例如手机。