Xamarin表格:MasterPage助手类

时间:2016-09-23 17:02:47

标签: c# xamarin xamarin.forms master-detail freshmvvm

我当前的应用有多个主要详情页面。我想创建一个辅助类,它有一个接受PageModels-Pages(ViewModels-views)列表的函数,我可以迭代它并创建主细节页面。

MyCurrent代码:

public static Page SetupMasterDetailNav<T,U>( Dictionary<T,string> Menu) 
        where T : class 
         //In Dictionary T is ViewModel(PageModel) , 
          String is name displayed on Master page  
    {
        var masterDetail = new FreshMasterDetailNavigationContainer();

        foreach (KeyValuePair<T,string> item in Menu)
        {
            masterDetail.AddPage<item.Key>(item.Value); 
        }
        masterDetail.Init("");
        return masterDetail;
    }

这段代码不起作用。它告诉我item.key是一个变量,不能用作类型任何人都可以建议我更好的方法或者我怎样才能实现我的目标?

1 个答案:

答案 0 :(得分:2)

AddPage<T>方法是一种通用方法,它需要一种类型。在这种情况下,它是FreshBasePageModel。正常用法如下:

masterDetail.AddPage<MyViewModel>("MyPage", model);

或:

masterDetail.AddPage<MyViewModel>("MyPage");

由于您的方法已经是通用的,并且似乎您希望它是ViewModel的类型,您可以这样做:

masterDetail.AddPage<T>(item.Value);

要执行此操作,您必须将方法签名更改为:

public static Page SetupMasterDetailNav<T,U>(Dictionary<T,string> Menu) 
    where T : FreshBasePageModel

不确定U在您的情况下使用了什么,您还没有显示它的用法。

你为什么这样做让我很困惑。