0

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

ASP.NET 中的 MasterPage 和 ChildElements 之类的东西 您总是可以看到您将哪些元素放在一起。

在WPF中也可能吗?否则..我对 DataTemplate 所做的每一次更改都可以在经过长时间的编译和启动后看到。

谢谢你们..

4

2 回答 2

1

斯特凡,

我认为您可以通过创建 Design Time 类来做到这一点,如下面的链接中所述:

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

希望这可以帮助。

于 2009-11-18T19:46:39.250 回答
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();
  ...
}

无论哪种情况,只要您取消注释代码,示例数据就会显示在设计器中。执行您的应用程序时,它将被真实数据替换。

于 2009-11-18T20:11:06.003 回答