(注意:我使用的是Xamarin.Forms和Rg.Plugins.Popup扩展名)
假设我有以下观点:
MyView1.xaml
MyView2.xaml
MyView3.xaml
我有相应的视图模型:
MyViewModel1.cs
MyViewModel2.cs
MyViewModel3.cs
我希望导航控制器中的方法能够根据类型显示视图。
NavigationController.ShowView(typeof(MyView1));
或者
NavigationController.ShowView(typeof(MyView1), typeof(MyViewModel1));
我怎么能实现这个?
目前我正在制作一份清单:
{
List<MyView> viewList = new List<MyView>();
MyView1 view1 = new MyView1();
MyViewModel1 viewModel1 = new MyViewModel1();
view1.BindingContext = viewModel1;
viewList.Add(view1);
// etc ...
}
static public void ShowView(Type type)
{
foreach (MyView v in viewList)
{
if (v.GetType() == type)
{
// code to show the view.
}
}
}
我遇到的问题是,在显示视图后,当它被解除时,它将自己设置为null。因此,我不想预先生成视图并将它们存储在列表中,而是想生成新视图。
答案 0 :(得分:1)
public static View CreateView(Type vType, Type vmType)
{
var view = (View)Activator.CreateInstance(vType);
view.BindingContext = Activator.CreateInstance(vmType);
return view;
}