我有一个Android应用,它使用包含一堆标签的SupportActionBar。这些选项卡每个都有一个片段,而片段又连接到我的核心项目中的ViewModel。这很好用,当我启动应用程序时,它们都会立即初始化并正确设置。 我想做的是从我的主要活动中调用其中一个ViewModel上的方法,该活动包含所有选项卡和片段。
我在另一篇文章中读到,在WP中你可以将DataContext强制转换为ViewModel,但这可能在Android中不起作用。我无法做到这一点,可能是因为我的DataContext不是当前显示的ViewModel,而是连接到我的主要活动的MainViewModel。或者也许不应该这样做,我不确定。
我正在尝试这样做:
var test = (MessagesViewModel)this.DataContext;
test.GetViewDataFromApi();
按下选项卡时更新视图中的数据。例如,我不能使用Init函数,因为每次显示视图时都不会重新创建ViewModel。
答案 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属性访问视图模型。