WPF DataTemplate / ControlTemplate和VS2008设计器

时间:2009-11-18 15:20:00

标签: wpf visual-studio-2008 datatemplate controltemplate

假设你有WPF窗口由许多使用DataTemplates / ControlTemplates 的元素组成(ItemControls ...) 但是,您希望在VS Designer中看到每个DataTemplate的样子。 此外,如果您将ControlTemplate定义为位于另一个文件中的模板,以便能够使用内容查看它。

像ASP.NET中的MasterPage和ChildElements 你总能看到你把哪些元素放在一起。

这个在WPF中是否可能? 否则..在对长时间的编译和启动之后,可以看到我对DataTemplate所做的每一个更改。

谢谢你们..

2 个答案:

答案 0 :(得分:1)

Stefan,

我认为您可以通过创建设计时间类来完成此操作,如下面的链接中所述:

http://karlshifflett.wordpress.com/2008/10/11/viewing-design-time-data-in-visual-studio-2008-cider-designer-in-wpf-and-silverlight-projects/

希望这会有所帮助。

答案 1 :(得分:1)

要非常简单地执行此操作,只需在构造函数中设置DataContext:

public MyUserControl()
{
#if !RELEASE
    //DataContext = new CustomerList { Customers = new [] {
    //  new Customer { Name = "Contoso", ZipCode = 12345 },
    //  new Customer { Name = "NorthWind", ZipCode = 12345 },
    //}};
#endif
  InitializeComponent();
  ...
}

请注意代码已注释掉的事实。如果要查看数据,只需取消注释代码即可。 #if !RELEASE可以防止您意外地在发布中包含示例数据(以及花费任何CPU加载它)。

如果您的示例数据很大,只需将其放入XML或数据库中并加载它:

public MyUserControl()
{
#if !RELEASE
    //DataContext = XmlSerializerManager.Deserialize<CustomerList>(
    //  File.ReadAllBytes("CustomerSampleData.xml"));
#endif
  InitializeComponent();
  ...
}

在任何一种情况下,只要取消注释代码,样本数据就会显示在设计器中。执行应用程序时,它将替换为真实数据。