Mvvm 在混合表达式中创建示例数据

Mvvm 在混合表达式中创建示例数据,mvvm,mvvm-light,expression-blend,blend,sample-data,Mvvm,Mvvm Light,Expression Blend,Blend,Sample Data,我一直在观察,有一次他谈到了混合和创建示例数据,但他没有在混合中生成数据,而是用C#代码生成数据 我想知道你是否创建了样本数据(来自样本类、新样本数据等),是否将其保存在项目中的某个位置(即我将我的项目交给其他人,他们在加载项目时是否会看到相同的数据)?您可以轻松地从示例数据和实时数据切换吗?示例数据只是一个定义对象图的xaml(而不仅仅是xml)文件,该对象图标记为生成类型DesignData或DesignDataWithDesignTimeCreatableTypes。这些文档在MSDN上并

我一直在观察,有一次他谈到了混合和创建示例数据,但他没有在混合中生成数据,而是用C#代码生成数据


我想知道你是否创建了样本数据(来自样本类、新样本数据等),是否将其保存在项目中的某个位置(即我将我的项目交给其他人,他们在加载项目时是否会看到相同的数据)?您可以轻松地从示例数据和实时数据切换吗?

示例数据只是一个定义对象图的xaml(而不仅仅是xml)文件,该对象图标记为生成类型DesignDataDesignDataWithDesignTimeCreatableTypes。这些文档在MSDN上并不多见,但关于它在Silverlight designer中的使用,在2012年的任何xaml设计器中基本相同

使用这些类型的样本时没有“实时数据”。所有值都在xaml文件中设置。您不能更改设计器中某个特定文本框的数据。您也无法轻松地在不同的样本之间切换

有两种方法可以创建示例数据——您可以手工构建它(如果您知道自己的类型并且喜欢编写xaml),或者您可以启动一个简单的控制台应用程序,构建对象图,然后使用类将图序列化为字符串(或者只需重写将其放到流中)。下面是一些C#伪代码,它们可能会也可能不会像所写的那样工作:

public string Serialize(object toSerialize)
{
    var sb = new StringBuilder();
    var writer = XmlWriter.Create(sb);
    XamlServices.Save(writer, toSerialize);
    writer.Flush();
    writer.Close();
    return sb.ToString();
}

您只需创建一个新文件,给它一个.xaml扩展名,将结果放在该文件中,保存到您的解决方案中,并将其生成操作设置为DesignData(设计器模拟类型的结构)或DesignTimeDataWithDesignTimeCreatableTypes(如果您的图形可以用XamlServices反序列化,则后者在设计器中使用时不会抛出任何异常,等等)。

(psst,这就像2年前的东西)是的,我知道。但每次我询问MVVMLight时,我都会提到它和2011年的视频…所以我猜它仍然是相关的。在视频中,我链接了演讲者决定使用C#作为生成数据的工具。这是否会遇到与在模拟器中使用设计数据相同的问题(如果使用wp7)在blend中,但当您部署它时,它会使用真实数据?设计数据只允许您查看设计图面中的数据。如果可以,那么您至少知道您的绑定可以工作。这(以及帮助生成绑定的工具)这是唯一的好处。设计数据没有部署。我不能和维迪亚说话,因为我没有看过。