很长一段时间以来,我一直坚持从事Windows Forms开发(从VB6开始,一直持续到C#.NET 4.5),并且我几乎都达到了Windows Forms可以使用纯.NET的极限。 ,以及使用本机代码的特殊效果。
我曾尝试学习WPF和XAML,但是我对WPF的新设计师一无所知。与Windows Forms设计器相比,它似乎真的很难使用。
我想知道.NET的WPF设计器是否还有其他更适合Windows Forms开发人员的替代方法?
很长一段时间以来,我一直坚持从事Windows Forms开发(从VB6开始,一直持续到C#.NET 4.5),并且我几乎都达到了Windows Forms可以使用纯.NET的极限。 ,以及使用本机代码的特殊效果。
我曾尝试学习WPF和XAML,但是我对WPF的新设计师一无所知。与Windows Forms设计器相比,它似乎真的很难使用。
我想知道.NET的WPF设计器是否还有其他更适合Windows Forms开发人员的替代方法?
Answers:
我喜欢写有关WPF的初学者文章的博客,其中一些特别可以帮助您的事情:
总而言之,Winforms和WPF之间的最大区别在于,在WPF中,您的数据层(DataContext
)是您的应用程序,而在Winforms中,您的UI层是您的应用程序。
换句话说,使用WPF,您的应用程序由您创建的对象组成,并且您使用模板和其他UI对象来告诉WPF如何绘制应用程序组件。
这与WinForms相反,在WinForms中,您可以使用UI对象构建应用程序,然后向其提供所需的数据。
因此,由于您的应用程序组件是通过代码设计的,因此实际上设计师并没有那么多的用途,并且只需要设计师绘制一个用户友好的界面即可反映您的数据类(通常是Models
和ViewModels
)
就个人而言,我更喜欢手动输入所有XAML,因为它更快,不会像拖放WPF设计器那样混乱,尽管我有时会使用该设计器来预览UI外观喜欢。
因此,要回答您有关是否还有其他WPF设计器适合WinForms开发人员的问题,我建议您不要寻找其他设计器,而是学习如何按照其使用方式使用WPF。像WinForms一样使用WPF意味着您会错过很多使它如此出色的东西:)
好吧,尽管有些人不同意,但我也建议不要使用VS设计器。至少不创建接口。如果您可能想在不启动应用程序的情况下获得实施的第一印象,那么它是一个很好的查看器,至少在不使用Styles
和Templates
使用任何复杂的东西的情况下。但是,恕我直言,其拖放结果只能用作原型,因此在不再需要时将其丢弃。
以下是一些我不使用它的重要原因。
VS设计器正在使用固定边距和对齐方式(如果使用布局控件,通常不需要这样做),这意味着如果需求发生变化,则必须触摸许多控件。如果您精通XAML和WPF机制,则可以创建一个外观和感觉都可以轻松修改的应用程序。
由于设计人员正在生成xaml,因此合成效果不是最佳的,UI可能会表现不佳。我没有测量,只是一种感觉。
更好的替代方法是MS Blend,尽管起步很简单。它的拖放结果比VS设计器的结果好得多。
但这是一个非常强大的工具,它可以帮助您使用非常强大的元素来创建最先进的UI。我建议至少参观一个简短的研讨会,以了解其机会。
回到你的问题,恕我直言,我认为很多人都同意,让自己一本好书,例如WPF偷跑及更高版本,如果你想了解更多有关的细节,WPF临。与相比,有很多功能Winforms
。您将不会通过使用任何设计师来了解它们。我认为这是最好的方法。
还请考虑那里有许多框架和库(例如MVVM light,WPFToolkit),它们已经在解决一些常见问题。因此,没有必要重新发明轮子。
我知道这是一个古老的问题,但是为了其他人的利益,我认为我应该稍微纠正一下这种平衡-阅读其他一些答案,我会感到有些“不使用设计器”情绪来自于使用不当。 本教程非常适合您,并回答了其他帖子中的一些批评。
例如,您可以从拖放控件时默认使用的基于Winforms的基于边距的布局切换到更加WPF风格的样式,方法是右键单击并选择“重置布局”
该视频涵盖了类似的背景。
我仍然更喜欢VS2010设计器-拖放到TabItems **时,VS2013似乎有点bug(我的当前项目使用了很多东西)-但是VS2013 Document Outline视图也允许您在该视图中移动内容,这可能是真正的加分。
但是,实际上,要充分利用WPF和xaml,您需要在设计者视图和xaml视图上都相当流利,并且需要在它们之间进行切换。如果您避开设计师,就会错过一些可以为您带来很多帮助的东西。
**编辑-尽管在VS 2013的Update 3和VS14的预览中似乎已对此进行了改进,但到目前为止,我有时仍会出现奇怪的行为。
首先,在Visual Studio deisgner的WPF(XAML)中,您应始终使用xaml代码来构建UI,并且不要拖放控件!您需要保持代码干净。您可以使用Expression Blend来帮助您,通过拖放使其更加面向图形,但这不是免费的。
这不是一个很大的学习曲线,但是我认为您应该学习如何手工制作xaml,而不是寻找替代方法。
我像您一样经历了这个过程。之后,我在公司WPF中教所有人。我已经学到了两个重要的课程,并且我认识的每个与WPF一起工作的人。
它使UI开发变得有趣。尤其是一旦您发现与Asyc流程一起玩的感觉如何。它确实消除了Winforms造成的许多麻烦。