【问题标题】:Pre-build out the XAML at app start (or On Navigated to)?在应用程序启动(或导航到)时预构建 XAML?
【发布时间】:2016-01-28 17:03:17
【问题描述】:

我有一个带有用户首选项页面的 Windows Phone 8.1 应用程序。该页面上有一个颜色选择器,该颜色选择器最初“折叠”,直到用户点击页面的一部分。当他们这样做时,XAML 大约需要 3 秒来构建颜色选择器(140 个小彩色文本块都绑定到一个列表)。用户第一次点击控件时会看到 3 秒的延迟。渲染后,第二次返回该颜色选择器(只要页面保持打开状态)是即时的。

基本上,我有一个非常复杂的 XAML 页面,其中包含成百上千个文本框,我想预先构建它,以便在我想显示它时不会有任何延迟。

有没有一种方法可以告诉 XAML 或我的代码隐藏来预先构建颜色选择器,以便在用户点击框以显示它时以及何时显示它?

我在以下位置看到了类似问题的答案: How to preload XAML at app startup? 我不明白,甚至不知道它是否适用于我。

【问题讨论】:

  • 如果需要那么长时间,就为了这个。我的朋友,你在前端做了一些不好的做法。让我想知道打开应用程序本身的等待时间是多少。我强烈建议重构....但是如果您真的想要一个相对简单的解决方法(尽管 imo 很脏而不是解决方案),请将内容放在视图框中或将其移出视图而不是切换可见性以获得您的显示效果。否则,你将需要处理 measure()、arrange()、updatelayout() 等大量工作。只需我的两分钱。

标签: c# xaml windows-phone-8.1 prebuild


【解决方案1】:

您所指的问题已经回答了您的问题。如果您需要加载这么多项目,那么您可以使用该方法。您需要记住的唯一一件事是,如果用户在颜色选择器完全加载之前点击以使其可见,则它不会准备好并且会显示延迟。

【讨论】:

  • 参考上面提到的...preload XAML...文章,Windows Phone上下文中的“worker thread”和“UI thread”是什么意思?我以为手机只有一个前台和一个后台线程。
  • UI 线程是您向用户显示的视图,工作线程是您可以使用的一种后台线程。要加载项目,您可以使用线程池。了解更多check this microsoft official link.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-06
  • 2019-11-08
  • 1970-01-01
相关资源
最近更新 更多