Mvvmcross,如何从我的android项目访问ViewModel

时间:2014-02-19 08:47:13

标签: mvvmcross

我有一个Android应用,它使用包含一堆标签的SupportActionBar。这些选项卡每个都有一个片段,而片段又连接到我的核心项目中的ViewModel。这很好用,当我启动应用程序时,它们都会立即初始化并正确设置。 我想做的是从我的主要活动中调用其中一个ViewModel上的方法,该活动包含所有选项卡和片段。

我在另一篇文章中读到,在WP中你可以将DataContext强制转换为ViewModel,但这可能在Android中不起作用。我无法做到这一点,可能是因为我的DataContext不是当前显示的ViewModel,而是连接到我的主要活动的MainViewModel。或者也许不应该这样做,我不确定。

我正在尝试这样做:

var test = (MessagesViewModel)this.DataContext;
test.GetViewDataFromApi();

按下选项卡时更新视图中的数据。例如,我不能使用Init函数,因为每次显示视图时都不会重新创建ViewModel。

1 个答案:

答案 0 :(得分:3)

在选择标签时,您是否尝试更新标签片段中的某些数据?

如果是这种情况,一种方法是

1)处理选项卡选择事件以获取当前选项卡(可能使用TabListener),

2)在选定的标签

中获取片段(MvxFagment)

3)从片段

获取(IMvxViewModel)视图模型

4)调用在视图模型上更新数据所需的方法

我假设您正在使用MvxFragment(https://github.com/MvvmCross/MvvmCross/blob/v3.1/Cirrious/Cirrious.MvvmCross.Droid.Fragging/Fragments/MvxFragment.cs?source=cc),因此您可以从MvxFragment的ViewModel属性访问视图模型。