c# - 创建自定义设计时环境

标签 c# wpf windows-forms-designer

我的问题与 WPF 的设计时支持有关。来自 MSDN我读了,

The WPF Designer provides a framework and a public API which you can use to implement custom adorners, tools, property editors, and designers.

但我发现的绝大多数示例都是微不足道的,并且没有说明太多有关在现有 WPF 应用程序中创建自定义设计器的信息。在过去的一年里,我们已经将我们的应用程序从 Windows 窗体迁移到 WPF,下一步将采用现有的 WinForms 面板设计器,并在 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 here , 和 another 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 目录。

关于c# - 创建自定义设计时环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2366366/

相关文章:

面向初学者的 C# GUI 编程 : Where to start?

c# - 为什么 Visual Studio 设计器不希望我更改代码中的事件名称?

c# - 使用 .mdf 数据库的 C# 表单应用程序中的 Linq to sql 问题

c# - 在流程布局面板中按下了哪个按钮?

c# - 在 Windows Phone 8 中获取 UI 调度程序

c# - 绑定(bind)到静态类实例中的属性

c# - OleDbCommand 存储过程找不到访问查询

c# - 文本更新未反射(reflect)在 WPF TextBlock 中 - 我错过了什么?

winforms - 如何获取组件的名称?

继承表单时不显示 C# 设计器