创建自定义设计时环境

问题描述:

我的问题与WPF的设计时支持有关。从MSDN我读,创建自定义设计时环境

WPF设计提供了一个框架 ,哪些是你可以用它来 实现自定义装饰器,工具, 属性编辑器,和设计师一个公共的API。

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

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

总而言之,我只是想知道如果很多人已经采取了这种做法,以及他们的结果是什么。

编辑:为了澄清,是的,我正在谈论主办一个WPF设计师。看来这可能不可能,这是一个巨大的挫折。这是我们当前的WinForms设计器的屏幕截图。如您所见,它用于创建自定义的用户界面。您可以将自定义控件拖放到其上并对其进行设计,然后将面板置于“运行模式”,其中所有控件都可以正常工作。

花了几个月写作我们的设计师,这将是可能的WPF?那么.NET 4.0和VS2010呢?那些会添加任何设计器功能吗?

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

不幸的是,有可能不取决于你想要做什么是一个很好的答案。你的问题有点模糊,至于你想要做什么。你是想在Visual Studio中简单地扩展现有的设计器,还是试图在你自己的独立应用程序中托管WPF设计器?

如果是后者,你可能不能做到这一点。 WinForms设计器实际上是.NET Framework(而不是Visual Studio)的一部分,所以任何提供正确宿主环境的应用程序都可以访问它。有a good article on MSDN on how to do that hereanother one on from DivElements here

很多人在其他论坛中都问过使用Cider(WPF设计器的代码名称)是否可以实现,以及it seems like the answer is no。您唯一可能的选择是重新设计您的应用程序以使用Visual Studio Isolated Shell。有一个good overview of the options here

编辑:它看起来像SharpDevelop可能有一个WPF设计器,你可以使用。我不是100%确定他们是自己开发的,还是他们想出办法来主办它,但你可以看看他们的来源并为自己做出决定。转到Daily Builds of Sharp Develop(它的而不是在官方版本中),并获得最新的每日构建。在该zip文件中,查看Samples/XamlDesigner目录。

+0

编辑我的问题来添加信息。我们正试图在我们的应用程序中托管设计人员,显然隔离壳不是我们的解决方案。我很震惊微软在这方面缺乏支持 - 他们似乎完全忽略了这种情况的可能性。 – Charlie 2010-03-05 19:47:38

+0

这听起来不像是他们忽视了情景......但是他们要么A.没有时间,要么B.决定最好的方式来做到这一点,并控制使用是通过隔离壳。尽管...看看孤立的壳,它是高度可定制的。 – Nick 2010-03-05 20:46:31

+1

编辑添加另一个可能的资源... SharpDevelop可能已经想出了一个方法来做到这一点。在我编辑的答案中有一个链接到他们的代码。 – Nick 2010-03-05 22:29:41