【发布时间】:2009-06-23 12:43:41
【问题描述】:
我想在 XAML 中编写 POCO,并使用 DataTemplate 在运行时在 GUI 中显示该对象。到目前为止,一切都很好;我知道该怎么做。
既然我已经有了一个可以将我的 POCO 转换为 WPF 可视化树的 DataTemplate,有没有办法让 Visual Studio 设计器一起玩,并且 让设计视图向我展示 POCO+DataTemplate 的生成的 GUI,当我编辑 POCO 的 XAML 时? (显然设计者不知道如何编辑“设计视图”;我不希望工具箱或单击 -拖动以在设计表面上工作。这很好 - 我只想在编辑时查看预览。)
如果您好奇,所讨论的 POCO 将是游戏的关卡地图。 (此时,我不打算发布最终用户地图编辑器,所以我将在 Visual Studio 中自己完成所有编辑。)所以 XAML 不是像 Window 和 UserControl 这样的 WPF GUI 对象,但它是仍然不是我想盲目地敲出一些 XAML 并希望最好的东西。我想看看我在做什么(GUI 地图)。
如果我尝试创建一个根是我的地图对象的 XAML 文件,设计器会显示“故意留空 - 可视化设计器不支持文档根元素”。即使我在 App.xaml 的 <Application.Resources> 中定义了 DataTemplate,它也会这样做。
但我知道设计师可以显示我的 POCO,当它位于 WPF 对象中时。实现我想要的一种可能的方法是拥有一个仅包含 ContentPresenter 的 ScratchUserControl,并将我的 POCO XAML 写入该 ContentPresenter 的 Content 属性中,例如:
<UserControl ...>
<ContentPresenter>
<ContentPresenter.Content>
<Maps:Map .../>
</ContentPresenter.Content>
</ContentPresenter>
</UserControl>
但是当我完成编辑时,我必须确保将内容复制回自己的文件中,这看起来很乏味且容易出错,而且我不喜欢乏味且容易出错。而且由于我可以以这种方式预览我的 XAML,难道没有 UserControl 就没有办法吗?
【问题讨论】: