将数据从 ParentViewModel 传递到 ChildViewModel
Passing Data from ParentViewModel to ChildViewModel
我正在尝试将数据从视图模型 (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
的方法。有什么想法吗?
MvxCachingFragmentStatePagerAdapter.FragmentInfo
构造函数提供了一个选项,用于将参数传递给您想要构造的 ViewModel 类型。
public FragmentInfo(
string title,
Type fragmentType,
Type viewModelType,
object parameterValuesObject = null);
实现示例
假设您的 ParentViewPagerViewModel
上有一个 属性 ZipCode
,您可以将其作为参数传递。
var fragments = new List<MvxCachingFragmentStatePagerAdapter.FragmentInfo>
{
new MvxCachingFragmentStatePagerAdapter.FragmentInfo(
title: "Tab1",
fragmentType: typeof(Child1Fragment),
viewModel: typeof(Child1ViewModel),
parameterValuesObject: new { zipCode = ViewModel.ZipCode})
};
然后在您的子视图模型中通过 Init
检索它
public void Init(int zipCode)
{
// Do stuff with zipCode
}
我正在尝试将数据从视图模型 (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
的方法。有什么想法吗?
MvxCachingFragmentStatePagerAdapter.FragmentInfo
构造函数提供了一个选项,用于将参数传递给您想要构造的 ViewModel 类型。
public FragmentInfo(
string title,
Type fragmentType,
Type viewModelType,
object parameterValuesObject = null);
实现示例
假设您的 ParentViewPagerViewModel
上有一个 属性 ZipCode
,您可以将其作为参数传递。
var fragments = new List<MvxCachingFragmentStatePagerAdapter.FragmentInfo>
{
new MvxCachingFragmentStatePagerAdapter.FragmentInfo(
title: "Tab1",
fragmentType: typeof(Child1Fragment),
viewModel: typeof(Child1ViewModel),
parameterValuesObject: new { zipCode = ViewModel.ZipCode})
};
然后在您的子视图模型中通过 Init
检索它public void Init(int zipCode)
{
// Do stuff with zipCode
}