2016-09-23 66 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