在混合表达式中创建示例数据
Posted
技术标签:
【中文标题】在混合表达式中创建示例数据【英文标题】:Creating Sample Data in Blend Expressions 【发布时间】:2013-02-20 18:31:47 【问题描述】:我一直在看 TechDays 2010 Understanding MVVM,有一次他谈到了混合和创建示例数据,但不是在混合中生成它,而是在 C# 代码中生成数据。
我想知道您是否创建示例数据(来自示例类、新示例数据等)是否将其保存在项目中的某个位置(即我将我的项目交给其他人,他们会在加载时看到相同的数据吗?项目)?您可以轻松地从示例数据和实时数据切换吗?
【问题讨论】:
(psst,这就像 2 岁之类的东西) 是的,我知道。但是每次我询问 MVVMLight 时,我都会提到它和 2011 年的视频来参考......所以猜它仍然是相关的。 【参考方案1】:样本数据只是一个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 扩展名,将结果放入该文件中,将其保存到您的解决方案中,并将其构建操作设置为 DesignData(设计器模拟您的类型的结构)或 DesignTimeDataWithDesignTimeCreatableTypes (后者,如果您的图形可以使用 XamlServices 反序列化,在设计器中使用时不会引发任何异常等)。
【讨论】:
在我链接的视频中,演讲者决定使用 C# 作为生成数据。这是否会遇到与它在模拟器中使用设计数据(如果使用 wp7)以及在混合但当你去部署它时使用真实数据时相同的问题? 设计数据只允许您在设计图面上查看数据。如果可以,那么您至少知道您的绑定有效。那(以及有助于生成绑定的工具)是唯一的好处。未部署设计数据。我没看过视频,无法与视频对话。以上是关于在混合表达式中创建示例数据的主要内容,如果未能解决你的问题,请参考以下文章