2014-09-04 131 views
1

使用WinRT,我試圖根據用戶輸入實現導航。我試圖在Navigate方法中使用變量頁面類型。不幸的是,它看起來不像變量那樣接受頁面類型。有人知道解決這個問題的方法嗎?在框架中使用可變頁面類型導航

object myPage = page2; 

this.Frame.Navigate(typeof(myPage)); 

我可以創建switch語句,並把每個語句中的整體教學,但似乎笨拙,難以維護,尤其是因爲我最終可能有各種網頁類型的很大。

任何幫助,將不勝感激。 謝謝。

編輯:稍微澄清。我正在編寫一個將測驗存儲在列表中的測驗計劃,但是需要特定頁面格式的多種類型的測驗,因此我需要不同的頁面類型。我將List類型的Page類型存儲爲一個字符串,並且該列表是隨機的,所以我不知道當前測試中的下一個頁面類型。測驗引擎將預先讀取隊列中的下一個測驗,並提取頁面類型並創建一個變量以插入this.Frame.Navigate命令。這是我遇到問題的地方。有關如何解決此問題的任何想法?

謝謝

+0

我最終通過將所有測驗頁面導航到一個結果頁面,然後使用switch語句處理一個點的導航來解決此問題。最終我將切換到導航服務,而不是實現更多的MVVM結構。感謝大家的幫助! – evilsushi 2016-05-06 21:02:44

回答

0

沒有任何「變量」類型。 var只允許您編寫較少的代碼。編譯器將表達式的返回類型替換爲變量類型,沒有「魔術」。

你可以寫這樣的:

object myPage; 

if (???) 
    myPage = new Page1(); 
else 
    myPage = new Page2(); 

this.Frame.Navigate(myPage.GetType()); 

如果您要根據用戶的輸入來實現導航,你definely需要使用if或switch語句。您需要將頁面的類型傳遞給Navigate()方法。我真的不明白你在上面的代碼中想做什麼。我會通過使用簡單的if語句來做到這一點。

+0

我只使用var,因爲我不確定變量類型。我認爲c#很聰明,如果它處於正確的上下文環境中,就可以發現它。 – evilsushi 2014-09-04 16:17:02

+0

我嘗試過使用對象,就像你做的那樣,大多數錯誤都消失了,但是頁面沒有導航。 – evilsushi 2014-09-04 16:32:04

+0

@evilsushi我無法重現您的問題。你能分享代碼嗎? – 2014-09-04 16:42:31