2015-12-14 72 views
2

在Windows 10 UWP之间的数据就可以建立多个窗口为一个单一的应用程序(包含一个单独的窗口和线程又名观点):如何共享多个视图

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

类似的问题,其涉及到的网页,但没有访问量:(UWP) Best practice for sharing data between pages

+0

我完全不同意将共享数据放入app.xaml或类似的黑客。你应该建立一个体面的服务或存储库来处理这种复杂的情况。 – Bart

+0

@Bart为什么不使用[并发集合](https://msdn.microsoft.com/en-us/library/dd997305(v = vs.110).aspx)和某些[同步基元](https:// msdn.microsoft.com/en-us/library/ms228964(v=vs.110).aspx)? – Romasz

+1

@Romasz他们没有错,“au contraire”,但我仍然会去体面的建筑。 – Bart

回答

3

虽然这个您有多个视图工作,但还是一个应用程序。这里最重要的是你在MSDN上提到的链接:

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

这会使共享数据时的情况变得复杂。当你有一个应用程序,你可以分享的应用类中的一些数据,但是你必须看出来的几件事情:

  • UI元素只能通过调度线程,在这种情况下,拥有它的人来访问(所以你不能分享这个),
  • 并发访问的集合 - 因为有可以同时访问/修改它们的线程数,使用Thread-Safe collections,也有些help here
  • 同步的情况下,你可能还需要some primitives到引导您的应用程序工作流程,
  • 竞赛条件 - 谨慎设计您的应用程序。

一些更多的帮助你可以找到在许多博客/职位。例如在Alabhari's one