2011-07-20 39 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的代码片段,但是我希望模型解耦,因为视图会有很多布局。 –

相关问题