Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 仅带代码的WPF_C#_.net_Wpf_Winforms - Fatal编程技术网

C# 仅带代码的WPF

C# 仅带代码的WPF,c#,.net,wpf,winforms,C#,.net,Wpf,Winforms,我在这里看到了很多关于WPF优点的问题,基本上每个答案都说这是蜜蜂的膝盖,但基本上每个答案都谈到了XAML,在许多情况下是图形设计师和表达式混合等。我的问题是,如果你是一个只在C#工作的单独程序员,是否值得进入WPF 具体来说,我没有平面设计师,我自己也没有这方面的天才;我不使用点击工具;我用C#编写所有内容,而不是XML Winforms在这些条件下运行良好。WPF也是如此,还是重要的功能只能在XAML中完成,默认设置不适合实际使用,你必须在团队中有一个图形设计师才能让事情看起来更好,等等,而

我在这里看到了很多关于WPF优点的问题,基本上每个答案都说这是蜜蜂的膝盖,但基本上每个答案都谈到了XAML,在许多情况下是图形设计师和表达式混合等。我的问题是,如果你是一个只在C#工作的单独程序员,是否值得进入WPF

具体来说,我没有平面设计师,我自己也没有这方面的天才;我不使用点击工具;我用C#编写所有内容,而不是XML


Winforms在这些条件下运行良好。WPF也是如此,还是重要的功能只能在XAML中完成,默认设置不适合实际使用,你必须在团队中有一个图形设计师才能让事情看起来更好,等等,而我这样的人最好还是坚持使用Winforms?

IMHO,如果只是为了确保你掌握了这些技能,那么走WPF路线是值得的。我曾经玩过基于XAML的Silverlight,我可以将大部分知识转移到WPF,即使SL是一个子集


老实说,一旦您习惯了它,大多数UI的构建就和使用WinForms一样容易。而且工具非常好,用于原型制作非常有用,并且不需要你有任何真正的艺术技能,除了你在做WinForms的东西。我相信在未来,学习更多关于WPF的知识只会让我受益,我相信其他人也是如此。

我自己也是一个代码编写者,说实话,这并不重要。即使您对图形设计一无所知,也可以使用VisualStudio中的编辑器来设计UI。与Win Forms一样,designer也提供了一个拖放设计器,所以这并不是什么问题。尽管我是一个代码编写者,但我对xaml没有任何问题,因为在某种程度上,它再次编写代码。起初我也有xaml的问题,但我已经习惯了,而且我必须在Win表单的代码中做的事情在xaml中非常简单


数据绑定非常简单,您不必关心如何将数据发送到UI,您只需拥有一个
ObservableCollection
或类似的属性,以及xaml代码中的一个属性,一切都可以为您完成。要格式化数据吗?只需将格式化属性添加到绑定中。要根据值为文本着色吗?模板选择器类有15行代码,绑定和模板选择在xaml代码中大约有10行。我真的越来越喜欢它了,随着时间的推移(和其他任何新技术一样),你会习惯它,产生好看的东西。

我说WPF适合你,如果你不想走xaml的路,只想编写代码,你应该继续这样做,在xaml中,某些事情是不可能的,但这是做布局的首选方式,但是没有人强迫你不在代码中这样做,但是如果你学习xaml,你将更快地生成UI元素,那么你将在代码中这样做,所以这是需要记住的。

在XAML中可以完成的所有事情也可以在代码中完成,因为XAML只是一个用于实例化和配置对象图的DSL,特别是WPF库(
System.Windows
)中的对象图。如果您正在构建业务线应用程序,那么WPF提供的WinForms中几乎没有不可用的功能。关键的区别在于WPF允许您更轻松、更灵活地完成许多事情,因为它具有更高级的对象模型

我认为WPF当然值得学习,但如果您想在不学习XAML的情况下完成它,那么我认为您可能会发现它更难grok

同样值得考虑的是,许多WPF开发人员手工编写XAML(而他们的设计师同行更可能在一开始就使用Blend),部分原因是出于必要性(VisualStudio2010之前的WPF设计师不是很好)部分原因是对象模型在XAML中比在C#中有更简洁的表达式。XAML本身是一种非常小的语言,但是它用来定义的对象模型(WPF对象模型)是巨大的,这就是复杂性的来源


如果您没有令人信服的理由停止使用WinForms,那么就不要这样做。然而,如果你能抛开你对用XML而不是C#编写代码的成见,那么我想你可能会惊讶于这种构建UI的不同方法可能会清理你的代码。

简短回答:是的,你只能用代码编写WPF

更详细的回答:设计师能够在UI上工作,开发人员能够在功能上工作,这实际上只是将功能与表示分离的副作用

WPF以一种强大的方式为表带来的是数据绑定,它使您能够使用更广泛的设计模式。已经讨论了不少了

  • 不同的配置方法鼓励约定,允许您编写更少的代码来实现相同的目标
  • 这种解耦还有一个很好的副作用,就是使应用程序更易于测试(如果不想,您不必编写测试,但至少有一个选项)
从WinForms迁移到WPF对于新的开发很可能是值得的。理论上,您可以继续使用WinForms(仅使用新的库),但随着您对技术的熟悉程度越来越高,您可以选择将更新的工具合并到您的开发中

如果你还没有看过的话,斯科特·汉斯曼的文章很有趣。

这是一篇老文章,但是。。。 在我看来,当您在任何环境中自己编写代码时,都没有边界,而且总是需要发现一些东西。过去很多年来,人们一直在用代码创建布局,但某些因素促使社区创建图形和ui工具。但是,没有什么是永恒的,趋势变化很快。还记得从ASP内联编码到