2017-04-18 58 views
0

在我的MainView中,我有一个存在于应用程序生命周期的MainViewModel。(UWP)如何从diff中访问viewmodel的属性/方法。视图模型?

我的MainView有一个嵌入WITHIN框架本身。

从该框架导航到每个页面都有自己的ViewModel(我认为这种方法是一个很好的模式?)。我们将这些视图模型称为“SubViewModel”

从SubViewModel中访问MainViewModel属性的最佳方法是什么?反之亦然?

回答

0

你不能让其他ViewModel可以获得ViewModels属性/方法。

这样做的好处是使用SubViewModel可以发送或发送消息和ViewModel可以处理消息的消息。

如果视图模型可以处理的SubViewModels消息,是说SubViewModel可以得到的ViewModels方法,它可以发送一个消息调用视图模型做方法和视图模型可以得到SubViewModels属性的SubViewModel可以把它的属性视图模型。

如果SubViewModels可以处理ViewModel消息,就像ViewModel可以处理SubViewModels消息一样,SubViewModels可以获得ViewModels属性。

我认为你正在寻找一个框架,我写了一个:https://github.com/lindexi/UWP/blob/master/uwp/src/Framework

有喜欢MVVMLight和this一些框架, JP.Utils.UWP

见:https://github.com/reactiveui/ReactiveUI

https://github.com/PrismLibrary/Prism

https://github.com/FantasticFiasco/mvvm-dialogs

0

您可以使用一个静态属性来保存MainPageViewModel

public static MainPageViewModel Current { get; private set; } 

public MainPageViewModel() 
{ 
    Current = this; 
} 

的当前实例,并用它来访问其成员。

MainPageViewModel.Current.MyProperty 
+0

这是一种很好的做法,还是只是一种方便?不过,你的方法是我真正想到的。 –

+0

此方法用于UWP示例中的内容页面,以便从MainPage访问成员,如[XamlPivot](https://github.com/Microsoft/Windows-universal-samples/blob/master/Samples/XamlPivot/cs /Scenario1.xaml.cs)示例和[ApplicationResources](https://github.com/Microsoft/Windows-universal-samples/blob/master/Samples/ApplicationResources/cs/scenario1.xaml.cs)。当我需要访问来自较低级别成员的视图或视图模型时,我总是使用它,但我不知道它是否是最好的方法。很高兴看到有人有更好的解决方案。 –

相关问题