在Blend表达式中创建示例数据

时间:2013-02-20 18:31:48

标签: mvvm mvvm-light expression-blend blend sample-data

我一直在关注TechDays 2010 Understanding MVVM,有一次他谈到混合和创建样本数据,但不是在混合中生成它,而是用C#代码生成数据。

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

1 个答案:

答案 0 :(得分:2)

示例数据只是 xaml (不是 xml )文件,用于定义使用构建类型 DesignData 或<标记的对象图强> DesignDataWithDesignTimeCreatableTypes 即可。这些文档在MSDN上很少,但this document关于它在Silverlight设计器中的使用在2012年的任何xaml设计器中基本相同。

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

有两种方法可以创建示例数据 - 您可以手动构建它(如果您知道您的类型以及您是否愿意编写xaml),或者您可以启动一个简单的控制台应用程序,构建您的对象图,然后使用XamlServices类将图表序列化为字符串(或者只是重写以将其删除到流中)。这里有一些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扩展名,将结果放入该文件中,将其保存到您的解决方案中,并将其Build Action设置为DesignData(设计器模拟您的类型结构)或DesignTimeDataWithDesignTimeCreatableTypes(后者如果您的图形可以使用XamlServices反序列化,在设计器中使用时不会抛出任何异常等。)