4

在 Windows 10 UWP 中,可以为单个应用创建多个窗口(也就是包含单独窗口和线程的视图):

但是在 UWP 中的多个视图之间共享数据/对象的正确方法是什么?MSDN 中没有提供这方面的信息。关于这个主题有一篇很好的文章:Windows 10, UWP, Multiple Windows, ViewModels and Sharing State。困难在于App.xaml为每个视图单独实例化。看看其他人在类似情况下做了什么很有趣?

与页面相关但与视图无关的类似问题:(UWP) Best practice for sharing data between pages

4

1 回答 1

4

在使用它时,您有多个视图,但仍然是一个应用程序。您链接的 MSDN 中提到了这里最重要的事情:

每个窗口都在自己的线程中运行。

这使共享数据的情况变得复杂。由于您有一个应用程序,您可以在应用程序类中共享一些数据,但您必须注意以下几点:

  • UI 元素只能通过Dispatcher线程访问,在这种情况下是拥有它们的线程(因此您不能共享它),
  • 并发访问集合 - 因为很少有线程可以同时访问/修改它们,所以使用线程安全集合,这里也有一些帮助
  • 在同步的情况下,您可能还需要一些原语来引导您的应用程序工作流程,
  • 竞争条件 - 谨慎设计您的应用程序。

您可以在许多博客/帖子中找到更多帮助。例如在Alabhari 的一个

于 2015-12-14T15:11:51.483 回答