C#基于类类型动态生成视图和视图模型

时间:2017-02-15 20:00:03

标签: c# xamarin.forms

(注意:我使用的是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。因此,我不想预先生成视图并将它们存储在列表中,而是想生成新视图。

1 个答案:

答案 0 :(得分:1)

很容易......

public static View CreateView(Type vType, Type vmType)
{
    var view = (View)Activator.CreateInstance(vType);
    view.BindingContext = Activator.CreateInstance(vmType);
    return view;    
}