如何在多个视图之间共享数据

时间:2015-12-14 14:32:04

标签: c# window windows-10 uwp multiple-views

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

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

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

1 个答案:

答案 0 :(得分:3)

使用此功能时,您有多个视图,但仍有一个应用程序。这里最重要的是你在MSDN上提到的链接:

  

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

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

  • UI元素只能通过 Dispatcher 线程访问,在这种情况下是拥有它们的那个(所以你不能共享它),
  • 对集合的并发访问 - 由于很少有线程可以同时访问/修改它们,因此使用Thread-Safe collections,还有一些help here
  • 如果是同步,您还可能需要some primitives来指导您的应用程序工作流程,
  • 竞争条件 - 谨慎设计您的应用。

您可以在许多博客/帖子中找到更多帮助。例如,在Alabhari's one