创建自定义设计时环境

Cha*_*lie 9 c# wpf windows-forms-designer

我的问题与WPF的设计时支持有关.从MSDN我读到,

WPF Designer提供了一个框架和一个公共API,您可以使用它来实现自定义装饰器,工具,属性编辑器和设计器.

但是我发现的绝大多数示例都是微不足道的,并没有说明在现有WPF应用程序中创建自定义设计器的情况.在过去的一年中,我们已将我们的应用程序从Windows Forms迁移到WPF,下一步将采用现有的WinForms Panel设计器,并在WPF中重写它.

我只想说这将是一个巨大的项目.但我甚至不知道从哪里开始.我想知道你们是否有过为WPF应用程序编写自定义设计器的类似经历,以及它是什么样的.更好的是,如果你可以比较和对比WinForms设计师和WPF设计师之间的功能,或解释从前者到后者的过渡,那将是有帮助的.如果您知道任何演示自定义设计环境(使用自定义控件等)的简单示例,那将非常有益.

总而言之,我只是想知道是否有很多人已经开始这样做,以及他们的成果是什么.

编辑:澄清,是的,我在谈论托管WPF设计师.这似乎甚至不可能实现,这是一个巨大的挫折.这是我们当前的WinForms设计师的屏幕截图.如您所见,它用于创建自定义用户界面.您可以将自定义控件拖到其上并进行设计,然后将面板置于"运行模式",其中所有控件都可以正常运行.

没花几个月写我们的设计师,这可能在WPF中可行吗?那么.NET 4.0和VS2010呢?那些会添加任何设计师功能吗?

alt text http://img94.imageshack.us/img94/5378/oldpaneldesigner.png

Nic*_*ick 2

不幸的是,根据您具体想要做什么,可能没有一个好的答案。您的问题对于您到底想做什么有点模糊。您是否尝试简单地扩展 Visual Studio 中的现有设计器,或者尝试将 WPF 设计器托管在您自己的单独应用程序中?

如果是后者,不幸的是您可能无法做到这一点。WinForms 设计器实际上是 .NET Framework(不是 Visual Studio)的一部分,因此任何提供正确托管环境的应用程序都可以访问它。MSDN 上有一篇关于如何做到这一点的好文章(此处),还有一篇来自 DivElements 的文章(此处)

许多人在其他论坛中询问是否可以使用 Cider(WPF 设计器的代号)实现同样的效果,答案似乎是否定的。您唯一可能的替代方案是重新设计您的应用程序以使用Visual Studio Independent Shell。这里有一个关于选项的很好的概述

编辑:看起来 SharpDevelop 可能有一个可以使用的 WPF 设计器。我不能 100% 确定他们是否开发了自己的,或者他们是否找到了托管它的方法,但您可以查看他们的来源并自行决定。转到Sharp Develop 的每日构建(尚未包含官方构建中)并获取最新的每日构建。在该 zip 文件中,查看 Samples/XamlDesigner 目录。