从 Windows 窗体到 WPF 的转换

很长一段时间以来,我一直坚持使用 Windows 窗体开发(从 VB6开始,一直到 C # 。NET 4.5) ,而且我已经几乎达到了 Windows 窗体所能做的极限,两者都使用纯。NET,以及使用本机代码的特殊效果。

我曾经尝试学习 WPF 和 XAML,但是我被 WPF 的新设计器卡住了。与 Windows 窗体设计器相比,它似乎真的很难使用。

我想知道是否有其他选择。NET 的 WPF 设计器,更适合 Windows 窗体开发人员?

79457 次浏览

首先,在 Visual Studio 设计器中的 WPF (XAML)中,您应该始终使用 XAML 代码来构建 UI,并且不要拖放您的控件!您需要保持代码的整洁。你可以使用 Expression Blend 来帮助你,它的拖放更加图形化,但是它并不是免费的。

这不是一个很大的学习曲线,但我认为你应该学习如何做你的 xaml 手,而不是寻找替代品。

好吧,虽然有些人不同意,我也建议不要使用 VS 设计器。至少不用创建接口。如果您可能希望在不启动应用程序的情况下获得实现的第一印象,那么只要没有使用像 StylesTemplates这样复杂的东西,它就是一个很好的查看器。但是,恕我直言,它的 drag and drop result应该只作为原型使用,因此在它不再需要后被丢弃。

Here are some reasons which are important for me not to use it.

  1. VS 设计器使用固定的边距和对齐方式(如果使用布局控件,这通常是不必要的) ,这意味着如果需求发生变化,就必须触摸许多控件。如果您深入研究 XAML 和 WPF 机制,那么您可以创建一个应用程序,只需要很少的努力就可以修改它的外观和感觉。

  2. 由于设计器正在生成 xaml,因此组合不是最佳的,UI 可能性能很差。我没有量,只是一种感觉。

一个更好的选择是 布兰德女士,虽然开始是其他一切,但容易。它的 拖放结果拖放结果比 VS 设计器的结果要好得多。
但它是一个非常强大的工具,可以帮助您使用非常强大的元素来创建最先进的 UI。我建议参观至少一个短期的研讨会,以获得其机会的想法。

回到你的问题,恕我直言,我想很多人都同意,给自己买一本好书,比如 WPF 释放,如果你想知道更多细节的话,再买一本 WPF Pro。有很多不同于 Winforms的特性。你不可能通过任何设计师来了解他们。我觉得这是最好的办法。

还请考虑到有许多框架和库(例如 MVVM 灯WPFToolkit)已经在解决一些常见的问题。所以没有必要重新发明轮子。

I like to blog about beginner articles for WPF, and there are a few in particular that may help you out:

To summarize, the biggest difference between Winforms and WPF is that in WPF your data layer (the DataContext) is your application, while in Winforms your UI layer is your application.

从另一个角度来看,使用 WPF,您的应用程序由您创建的对象组成,并且您使用 Template 和其他 UI 对象来告诉 WPF 如何绘制应用程序组件。

这与 WinForms 相反,在 WinForms 中,用 UI 对象构建应用程序,然后向它们提供所需的数据。

正因为如此,设计器实际上并没有被使用太多,因为应用程序组件是用代码设计的,而且设计器只需要绘制一个反映数据类(通常是 ModelsViewModels)的用户友好界面

就个人而言,我更喜欢手工输入所有的 XAML,因为它更快,而且不会像 WPF 设计器那样乱七八糟,尽管我有时会使用 Designer 来预览我的 UI 会是什么样子。

所以回答你关于是否有其他适合 WinForms 开发者的 WPF 设计器的问题,我建议与其寻找另一个设计器,不如学习如何使用 WPF。像使用 WinForms 一样使用 WPF 意味着你错过了很多使它如此伟大的东西:)

I know this is an old question but for the benefit of anyone else looking at this, I think I should redress the balance a bit - reading some of the other answers, I get the feeling that some of the 'don't use the designer' sentiment comes from not using it properly. This tutorial is quite good to get you going and answers some of the criticisms in the other posts.

例如,您可以通过右键单击并选择“重置布局”,从放弃控件时默认的基于边距的类 Winform 布局切换到更像 WPF 的样式

这个视频覆盖了类似的领域。

总的来说,我还是比较喜欢 VS2010设计器——当拖放到 TabItems * * 上时,VS2013似乎有点问题(我目前的项目经常使用 TabItems * *)——但是 VS2013文档大纲视图也可以让你在这个视图中移动东西,这是一个真正的优势。

但是,真的,为了最大限度地发挥 WPF 和 xaml 的作用,你需要对设计器视图和 xaml 视图都相当熟悉,并在它们之间切换; 如果你对设计器敬而远之,你就错过了一些对你有很大帮助的东西。

编辑——尽管在 VS2013的更新3和 VS14的预览中,这似乎已经得到了改进,但到目前为止,我有时仍然会有奇怪的行为。

我和你一样经历过这个过程。之后,我在我的公司教每个人 WPF。有一些重要的经验教训,我已经学到和每个人我知道谁与 WPF 工作。

  1. 如果在后面的代码中使用 UI 控件,... 。那你就是做错了。您完全没有必要在后面的代码中处理 UI 控件。
  2. 您不需要可视化开发人员来点击它。通过仅处理 XAML,可以提高工作效率。 使用复制/粘贴。不要相信你的打字能力。这会省去很多麻烦。
  3. 可以将 XAML 视为查看数据的窗口。在你后面的代码中正在更改数据。在 XAML 中,您定义了 UI 将如何解释数据。
  4. 转换器太神奇了。一旦你得到一个关键数量的转换器,你的生产力将火箭天空高。他们将接管疯狂的控件事件处理器的角色,隐藏或调整大小,或任何关于用户界面,

它使 UI 开发变得有趣。特别是当您发现它是如何与 Asyc 进程一起工作的时候。它真的带走了很多头痛,是由 Winform 造成的。