C# UWP应用程序中的全局MVVM视图模型

C# UWP应用程序中的全局MVVM视图模型,c#,mvvm,win-universal-app,global,viewmodel,C#,Mvvm,Win Universal App,Global,Viewmodel,在WP8.1或WPF桌面应用程序中,我可以在App.xaml.cs中将我的ViewModel创建为静态实例,并在整个应用程序中将其称为“App.myViewModel”,但在UWP中,这似乎不起作用(可能是出于设计?) 我想要一个全局视图模型的原因是,与许多应用程序一样,我有一个主页,通过从网站下载信息来填充VM(我正在为客户端开发一个基于业务的RSS阅读器),当我导航到另一个页面,然后返回主页时,我的VM再次为空(因为我似乎没有选择,只能在主页中声明它)所以我每次都要重新加载所有数据 此外,如

在WP8.1或WPF桌面应用程序中,我可以在App.xaml.cs中将我的ViewModel创建为静态实例,并在整个应用程序中将其称为“App.myViewModel”,但在UWP中,这似乎不起作用(可能是出于设计?)

我想要一个全局视图模型的原因是,与许多应用程序一样,我有一个主页,通过从网站下载信息来填充VM(我正在为客户端开发一个基于业务的RSS阅读器),当我导航到另一个页面,然后返回主页时,我的VM再次为空(因为我似乎没有选择,只能在主页中声明它)所以我每次都要重新加载所有数据

此外,如果我想从导航页面访问VM,我现在必须将对VM的引用传递到该页面,而使用全局方法,我仍然可以访问App.myViewModel

我唯一更改VM内容的时间是从主页上的UI操作,因此我只希望能够从其他页面导航回主页,并保持VM完好无损


有人能解释一下UWP是如何做到这一点的吗?我仍然可以使用App.xaml.cs吗?如果可以,如何使用?如果这是不可能的,为什么它是这样设计的

您正在寻找ViewModelLocator。这里你有很好的解释和例子如何使用它

即使这是一种反模式,您也可以为您的VM使用单例。这样你就永远不会丢失任何信息。谢谢你的回答,但这意味着我必须重构我的应用程序以使用MVVMLight,而我不想使用它-是否有一个仅使用普通MVVM结构的等价物?做了更多的研究,看起来MVVMLight是最好的解决方案,所以我将此标记为答案。