Windows phone 7 是否为每个viewmodel加载具有不同视图的xml文件?

Windows phone 7 是否为每个viewmodel加载具有不同视图的xml文件?,windows-phone-7,mvvm-light,Windows Phone 7,Mvvm Light,我想用MVVMLight做两件事,但我不知道从哪里开始 将XML文件序列化为viewmodel或用作数据源 请您推荐一种不同的格式(我现在可以更改),我找不到任何有关最初设置数据源的mvvmlight教程 根据xml文件中的特定记录类型,使用不同的布局 我正在考虑使用switch语句以编程方式隐藏/显示和重新组织所有内容,但它似乎不正确 我目前使用linq读取模型,但没有使用MVVMlight(这是否仍然适用于MVVM?) public IEnumerable LoadQuestions

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

  • 将XML文件序列化为viewmodel或用作数据源
请您推荐一种不同的格式(我现在可以更改),我找不到任何有关最初设置数据源的mvvmlight教程

  • 根据xml文件中的特定记录类型,使用不同的布局
我正在考虑使用switch语句以编程方式隐藏/显示和重新组织所有内容,但它似乎不正确

我目前使用linq读取模型,但没有使用MVVMlight(这是否仍然适用于MVVM?)

public IEnumerable LoadQuestions()
{
XDocument questionData=XDocument.Load(“questions.xml”);
var data=来自questionData.substands(“问题”)中的查询
选择新测验。问题
{
QuestionTitle=(字符串)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”)。值:string.Empty
};
var shuffledData=Enumerable.Shuffle(数据);
返回shuffledData;
}

存储数据的格式和使用的文件数将取决于数据及其在应用程序中的使用方式

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

谈到文件格式和序列化,二进制通常比JSON快,JSON通常比XML快

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

同样,对于如何显示不同的数据,没有通用的规则。如何做到这一点将取决于数据、不同之处以及应用程序的架构

如果数据非常不同,您可能需要为不同的数据使用不同的页面。
您可以对每种类型的数据使用不同的用户控件,并在页面中加载相应的用户控件。
您可以使用不同的模板。

或者您可以将UIElement的可见性链接(绑定)到数据类型或数据中是否存在某些字段。

您所说的“数据源”是什么意思?mvvmlight与文件格式无关。我不知道你在问什么。我想把一个xml文件序列化到一个模型中,如果有更好的数据格式可以使用的话,我会使用它。@Matt我的意思是将一个xml加载到一个模型中。我用XDocument.load演示了这个例子。我怎么用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;
}