我正在尝试将数据从视图模型(VM)传递到ParentViewPagerVM
到ChildTabVM
。在我的第一个VM中,我获取了要传递给ChildTabVM
的数据。我找不到任何解决办法。
FirstViewModel.cs
public MvxCommand GoToLocationInfoCommand
{
get
{
return new MvxCommand(
() => ShowViewModel<LocationViewPager>(new { param = "Test"}));
}
}
ParentViewPagerViewModel.cs
public void Init(string param)
{
Debug.WriteLine("Paramter: " + ZipCode);
}
ParentViewPagerFragment.cs
if (viewPager != null)
{
var fragments = new List<MvxCachingFragmentStatePagerAdapter.FragmentInfo>
{
new MvxCachingFragmentStatePagerAdapter.FragmentInfo(
"Tab1", typeof(Child1Fragment), typeof(Child1ViewModel)),
new MvxCachingFragmentStatePagerAdapter.FragmentInfo(
"Tab2", typeof(Child2Fragment), typeof(Child2ViewModel)),
new MvxCachingFragmentStatePagerAdapter.FragmentInfo(
"Tab3", typeof(Child3Fragment), typeof(Child3ViewModel))
};
viewPager.Adapter = new MvxCachingFragmentStatePagerAdapter(
Activity, ChildFragmentManager, fragments);
}
由于我正在制作tabView
,因此我找不到将数据从ParentViewPagerVM
传递到Child1VM
的方法。有什么想法吗?
答案 0 :(得分:2)
MvxCachingFragmentStatePagerAdapter.FragmentInfo
构造函数提供了一个选项,用于将参数传递给您想要构造的ViewModel类型。
public FragmentInfo(
string title,
Type fragmentType,
Type viewModelType,
object parameterValuesObject = null);
实施例
假设您ZipCode
上有一个属性ParentViewPagerViewModel
,您可以将其作为参数传递。
var fragments = new List<MvxCachingFragmentStatePagerAdapter.FragmentInfo>
{
new MvxCachingFragmentStatePagerAdapter.FragmentInfo(
title: "Tab1",
fragmentType: typeof(Child1Fragment),
viewModel: typeof(Child1ViewModel),
parameterValuesObject: new { zipCode = ViewModel.ZipCode})
};
然后在您的Child ViewModel中通过Init
检索它public void Init(int zipCode)
{
// Do stuff with zipCode
}