2011-07-20 70 views
0

我想用MVVMLight做兩件事,但我不知道從哪裏開始。加載一個xml文件,每個viewmodel有不同的視圖?

  • 連載的XML文件作爲視圖模型或用作數據源

你會推薦不同的格式(我可以在這一點上改變),我找不到mvvmlight與任何教程最初建立一個數據源。

  • 使用不同的佈局取決於特定類型的記錄在xml文件

我使用switch語句來隱藏/顯示和程序重新組織內容考慮,但它看起來不正確。

我目前使用LINQ讀入一個模型,但沒有使用MVVMlight(將在仍與MVVM工作?)

public IEnumerable<Quiz.Question> LoadQuestions() 
{ 

     XDocument questionData = XDocument.Load("questions.xml"); 

     var data = from query in questionData.Descendants("question") 
        select new Quiz.Question 
        { 
         QuestionTitle = (string)query.Attribute("title"), 
         QuestionText = query.Element("text") != null ? query.Element("text").Value.Trim() : string.Empty, 
         QuestionImage = query.Element("image") != null ? query.Element("image").Attribute("src").Value : string.Empty 
        }; 

     var shuffledData = Enumerable.Shuffle<Quiz.Question>(data); 

     return shuffledData; 
} 
+0

你是什麼意思的「數據源」? –

+0

mvvmlight與文件格式沒有任何關係。我不確定你在問什麼。 –

+0

我想將一個xml文件序列化爲模型,如果有更好的數據格式可供使用,那麼我將使用它。 –

回答

1

格式你存儲你的數據,你使用,將取決於文件的數量關於數據以及它在應用程序中的使用方式。

您需要在以下方面找到平衡:序列化和反序列化性能/速度,處理數據的難易程度,文件大小,文件數量(以及文件管理)以及使用外部庫的能力。

當涉及到文件格式和序列化時,二進制文件通常比JSON快,而JSON通常比XML快。

您用於序列化的庫也會對事物產生很大影響。 (提示:如果使用JSON格式的數據,請使用JSON.Net而不是DatContractjsonSerializer。)

同樣沒有關於如何顯示不同數據的一般規則。你如何這樣做將取決於數據,什麼不同和應用程序的架構。

如果數據非常不同,您可能需要爲不同的數據使用不同的頁面。
您可以爲每種類型的數據使用不同的用戶控件,並在頁面中加載相應的控件。
您可以使用不同的模板。
或者您可以將UIElement的可見性鏈接(綁定)到數據類型或數據中是否存在某些字段。

+0

在我的示例中,它是一個包含多個選擇題的測驗應用程序,每個問題的可用答案數量和每個按鈕的位置都不相同,但只有很多變體。 –

+0

我已經更新了我沒有使用MVVM的代碼片段,但是我希望模型解耦,因爲視圖會有很多佈局。 –

相關問題