【问题标题】:Page Transitions not working for ForwardIn upon navigation导航时页面转换不适用于 ForwardIn
【发布时间】:2011-11-22 22:50:01
【问题描述】:

我的 WP7 应用程序中有多个页面,我通过在使用应用程序期间做出的选择进出应用程序。这是一个数据量大的应用程序,但我没有做任何其他事情,只是使用它自己的 ViewModel 来填充控件。

ForwardIn 过渡动画未能显示 - 这导致丑陋的黑屏暂停约 1.5 秒,页面似乎突然弹出。我在某些页面中有白色背景,所以在出现手机后会尝试自动调整亮度,这看起来也很糟糕。有什么需要特别注意的吗?

有没有一种方法可以在导航之前预加载页面,以便顺利进行,无论如何我都在使用前面页面中的性能进度条来加载数据。有什么方法可以分析此页面加载,以便我可以检查花费最多的时间。

【问题讨论】:

标签: windows-phone-7 transitions navigationservice


【解决方案1】:

我在绑定到列表时经常看到这种效果。我所做的是将绑定延迟到导航/动画完成之后。我通常在动画完成后显示一个进度条,在后台线程上等待大约 50 毫秒以允许进度条更新它的 UI,然后绑定到列表并隐藏进度条。

这是我在动画完成时运行的代码:

progressBar.IsIndeterminate = true;
progressBar.Visibility = Visibility.Visible;
SynchronizationContext context = SynchronizationContext.Current;
Thread t = new Thread(() =>
{
    /* Allow the UI to catch up */
    Thread.Sleep(50);
    context.Post((state) =>
    {
        list.ItemsSource = dataSource;

        /* Hide the progress bar */
        progressBar.IsIndeterminate = false;
        progressBar.Visibility = Visibility.Collapsed;
    }, null);
});
t.IsBackground = true;
t.Start();

【讨论】:

  • 将其放入绑定函数中是否安全?我在 XAML 文件中分配的最多,我现在需要将它们移出吗?
  • 进度条确实在上一页,我控制不了。
  • 您需要删除 xaml 中的绑定,否则列表将在动画完成之前绑定。进度条只是一个例子,像这样加载时,我总是用进度条覆盖列表。
  • 我从在线开发博客中获得了动画示例,使用标准旋转门模板。当我在样品上使用它时效果很好。也许我会试试你说的。
  • 在代码隐藏中绑定 DataContext 的最佳方式是什么,尤其是在动画方面?此外,我在启用此动画的枢轴中有一些用户控件。除了这个页面之外,大多数页面似乎一切都很好 - 不幸的是,它是主要的搜索表单。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 2020-06-28
  • 1970-01-01
  • 2016-05-31
  • 1970-01-01
  • 2018-02-15
相关资源
最近更新 更多