WP 7.5应用程序。我有两个故事板动画 - 一个在图像上,另一个在文本上。
问题1:当我转到下一页并返回时,图像和文字会闪烁。
解决方案1:所以我添加了OnNavigateFrom并明确停止了动画,并将动画中涉及的所有属性重置为0.
问题2:现在说屏幕进入锁定模式,当我解锁时,由于我在OnNavigatedFrom中将我的一个元素的不透明度设置为0,因此隐藏了元素,实际应该是可见的直到用户移动到下一页。
解决方案2:我在代码中处理了Obscured和UnObscured处理程序,如下所示,并添加了一个标志,以查看应用程序是否将进入模糊模式,不停止动画或重置属性。
public class Page2 :PhoneApplicationPage
{
private bool _isObscured = false;
public Page2()
{
(Application.Current as App).RootFrame.Obscured += OnObscured;
(Application.Current as App).RootFrame.Unobscured += OnUnobscured;
InitializeComponent();
}
protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
{
//Stop animations and reset properties only if not going to obscure mode.
if (!_isObscured)
{
//stop animaiton
Storyboard1.Stop();
Storyboard2.Stop();
//Reset all transform properties to 0
Text1.Opacity = 0;
Image1.RenderTransform.SetValue(CompositeTransform.ScaleXProperty, 0.0);
Image1.RenderTransform.SetValue(CompositeTransform.ScaleYProperty, 0.0);
}
base.OnNavigatedFrom(e);
}
void OnObscured(object sender, ObscuredEventArgs e)
{
Storyboard1.Pause();
Storyboard2.Pause();
_isObscured = true;
}
void OnUnobscured(object sender, EventArgs e)
{
Storyboard1.Resume();
Storyboard2.Resume();
_isObscured = true;
}
}
问题:这是正确的方法还是有更好的方法?这样做会有任何认证问题吗?
任何帮助都非常感激。
答案 0 :(得分:0)
更简单的方法是添加IsLeave
布尔属性,并在调用NavigateTo
方法的点击事件中将其设置为true。另外,也可以在同一个功能中停止动画。
您可以确定,当您回来时,IsLeave
属性会说您要执行动画。
private bool IsLeave = false;
OnNavigatedTo()
{
if (IsLeave)
{
//We come back. Reset animations
IsLeave = false;
}
}
ClickEvent()
{
IsLeave = true;
//Permorm all you need with animations. We leave this page
NavigationService.NavigateTo()
}