2016-09-23 37 views
1

我目前的应用程序有多个主要的详细信息页面。我想创建一个帮助类,它有一个函数,接受可以遍历并创建主要详细信息页的PageModels-Pages(ViewModels-views)列表。Xamarin表格:MasterPage助手类

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; 
    } 

此代码不work.It告诉我item.key是一个变量,不能用作类型的任何一个建议我一个更好的办法或者是怎么回事我能达到我的目标吗?

回答

2

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

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

或:

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

因为你的方法已经是通用的,看来你希望它是,你可以简单地做视图模型的类型:

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

要做到这一点,你必须将你的方法的签名更改为类似:

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

不确定U用于您的情况,您没有显示它的用法。

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

+0

忘了删除U.如果我不得不创建一个帮助器方法,我传递视图模型来创建主详细信息页面。更好的方法是什么? 正如你所说'masterDetail.AddPage (“MyPage”);'是正常的用法,而不是使用'MyViewModel'和'MyPage'我想通过我想创建的所有视图模型的列表.. – TheDeveloper

+0

你怎么样构建这个列表? – Cheesebaron

+0

在我们的应用程序中,我们有多个主要详细信息页面,因此我希望创建一个帮助程序功能,我可以在任何时候创建主要详细信息页面。我想调用助手类并传递视图模型列表(可以使用字典?)及其名称,可以通过帮助函数迭代它以创建主详细信息页面。 – TheDeveloper