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

本文关键字:之间 共享 数据 视图 | 更新日期: 2023-09-27 18:26:53

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

  • 显示一个应用的多个视图
  • 多视图示例
  • 多窗口指南

但是,在UWP中的多个视图之间共享数据/对象的正确方式是什么?MSDN中没有提供任何相关信息。有一篇关于这个主题的好文章:Windows10,UWP,多个窗口,ViewModels和SharingState。困难在于App.xaml是为每个视图单独实例化的。看看其他人在类似的情况下做什么很有趣?

一个与页面而非视图有关的类似问题:(UWP)在页面之间共享数据的最佳实践

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

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

每个窗口都在自己的线程中操作。

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

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

你可以在许多博客/帖子中找到更多帮助。例如,在阿拉巴里的一个。