在我的WinRT XAML应用程序中,我在Main.xaml页面上有一个EntranceThemeTransition,当你第一次加载应用程序时它没有播放(App.Xaml执行Main.xaml的帧加载)。然而,一旦应用程序加载,我离开Main然后返回它确实播放。我已经在我构建的其他WinRT应用程序中注意到了这一点。
这是一个已知的错误或功能,允许更快的启动?我花时间做了一个很好的介绍转换,很遗憾大多数用户都看不到它。看起来像应用程序加载时的后台转换负载以及用户在页面上的时间转换完成。
目前我正在使用Thread.Wait和其他一些黑客攻击 - 但是他们并没有将此作为“Fast& Fluid”体验,并且当您从另一个页面导航回来时,转换看起来很粗糙。其他人有这个问题吗?在第一次加载时强制进入动画的最佳做法是什么?提前谢谢!
答案 0 :(得分:0)
我认为这种情况发生的主要原因是该元素已经在XAML树中创建,但这些元素绑定的内容是从Web服务加载数据时迟到的内容。所以从技术上来说它是动画的,但你没有看到它,因为它们没有内容。您可以使用DeferredContentPresenter来修复它,该DeferredContentPresenter将您的XAML保存为DataTemplate,等待VM指示它已加载数据。然后,您可以使用DataTemplate上的LoadContent函数来创建XAML树。现在,由于创建了元素并且数据也可以同时使用,因此您应该看到入口动画。
您可以调整此处给出的代码:Deferred loading of XAML并添加IsLoaded属性并将其绑定到当您从Model层加载数据时将从ViewModel公开的IsLoaded属性。当DeferredContentProvider中的此IsLoaded属性发生更改时,您将调用LoadContent。
答案 1 :(得分:-1)
我已经看到问题消失或至少在我进行发布版本并在没有调试的情况下运行应用程序时变得不那么明显。
否则我会显示一个带有进度条的加载屏幕,并在应用程序启动之前预先加载图像。