使用viewmodel以不同视图加载xml文件?

时间:2011-07-20 08:57:10

标签: windows-phone-7 mvvm-light

我想用MVVMLight做两件事,但我不知道从哪里开始。

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

1 个答案:

答案 0 :(得分:1)

您存储数据的格式以及您使用的文件数量取决于数据及其在应用程序中的使用方式。

您需要找到以下方面的平衡:序列化和反序列化性能/速度,使用数据的简便性,文件大小,文件数量(以及文件管理)以及使用外部库的能力。

对于文件存储和序列化,二进制文件通常是faser而不是JSON,它通常比XML快。

用于序列化的库也会对事物产生很大影响。 (提示。如果使用JSON格式数据,请使用JSON.Net而不是DatContractjsonSerializer。)

同样,没有关于如何显示不同数据的一般规则。您如何这样做将取决于数据,不同之处以及应用程序的结构。

如果数据非常不同,您可能希望为不同的数据使用不同的页面 您可以为每种类型的数据使用不同的用户控件,并在页面中加载适当的用户控件 您可以使用不同的模板 或者,您可以将UIElement的可见性链接(绑定)到数据类型,或者数据中是否存在某些字段。