0

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

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

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

4

1 回答 1

0

我在绑定到列表时经常看到这种效果。我所做的是将绑定延迟到导航/动画完成之后。我通常在动画完成后显示一个进度条,在后台线程上等待大约 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();
于 2011-11-22T14:50:01.003 回答