mvvm - 在混合表达式中创建样本数据

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

我一直在观看TechDays 2010 Understanding MVVM,有一次他谈论混合和创建样本数据,但是他没有使用混合生成数据,而是使用C#代码制作数据。

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

最佳答案

样本数据只是一个 xaml (不仅是xml)文件,它定义了您的对象图,并用构建类型 DesignData DesignDataWithDesignTimeWithableabless 标记了该对象图。这些文档在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反序列化,在设计器中使用时不会引发任何异常等)。

关于mvvm - 在混合表达式中创建样本数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14987348/

相关文章:

c# - 上下文菜单继续使用Mvvm获取错误的对象

c# - 视觉效果应该在 View 还是 ViewModel 中实现?

mvvm - 你会为 Rx.Observable 创建一个服务吗?

c# - WPF 忽略 d :IsHidden ="True" in run mode (OK in design mode)

c# - 多行数据网格来处理集合中的集合?

c# - XAML UI 更新在代码隐藏中不可见

c# - ListBox SelectedIndex 作为命令参数

mvvm - MVVM Light和SL3命令

wpf - 在 WPF MVVM 中动态添加控件

WPF MVVM Light 数据绑定(bind)上下文菜单以列出 View 项