2015-12-14 101 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