簡體   English   中英

C#基於類類型動態生成視圖和視圖模型

[英]C# Dynamically generate view and view model based on class type

(注意:我使用的是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。 因此,我想生成新的視圖而不是預生成視圖並將它們存儲在列表中。

很簡單...

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM