WPF应用程序是否需要使用XAML?

我想学习C#,似乎每个人都在使用WinForms切换到使用WPF。 由于使用了用于构建Forms的.XAML文件,WPF应用程序对我来说似乎更加复杂。

在我真正参与之前,我只想问一下,XAML文件是构建WPF应用程序的唯一方法吗? 有更简单的方法吗? 我知道我可以学习使用WinForms,这看起来要容易得多,因为你基本上有一个Form对象可以使用代码,但就像我提到的那样我认为最好构建WPF应用程序

如果您知道如何使用XAML会使事情变得更容易,因为它更具可读性和声明性,但如果您愿意,您可以(几乎)在C#代码中执行任何操作。

例如

   

 var border = new Border(); border.BorderBrush = Brushes.Red; var textBlock = new TextBlock(); textBlock.Text = "Lorem Ipsum"; // The following step is implicit in XAML via the structure border.Child = textBlock; 

虽然这可以更简洁,更层次地编写:

 new Border { BorderBrush = Brushes.Red, Child = new TextBlock { Text = "Lorem Ipsum" } }; 

一般来说我总是建议使用XAML,原因包括:

  • 解析器根据WPF的布局系统优化树结构。
  • 不支持在代码中创建DataTemplates 。 不推荐使用FrameworkElementFactories的构造支持使用XamlParser (我绝对不建议在代码中处理XAML字符串)。
  • UI和代码之间的分离。

XAML当然不是构建WPF应用程序的唯一方法。 在运行几个工具之后,XAML本身被翻译成C#/ IL,用于实际构建UI。 没有什么可以阻止您编写完全相同的代码并手动构建WPF表单。

我会提醒你,但要考虑不采取这种方法。 XAML无疑是构建WPF应用程序的首选工具。 它将出现在绝大多数网络样本中。 手动编码的WPF应用程序的样本数量要少得多。

虽然您可以在代码隐藏中构建所有内容,但XAML 构建WPF应用程序的简便方法。 以这种方式做事也有助于从程序逻辑中分离视图。 理想情况下,WPF开发团队至少由一名程序员/设计师组成,他们负责XAML(或视觉方面)的事情。 他们会制作动画和其他视觉元素。 以及负责编程逻辑和数据模型类型的至少一个“普通”开发人员。 当然,这不是一个理想的世界。

不,你没有必要,但在@HB州,它使它更容易。

如果你使用像Visual Studio这样的IDE,就像WinForms一样,你有一个设计师加上Expression Blend。 如果你发现XAML最初压倒性的话可能会玩,而不是直接进入XAML。

是的,您可以编写纯WPF代码,但我不推荐它。

Petzold的书“ Application = Code + Markup”引导您在使用XAML之前使用代码中的纯WPF。 它很容易二手,您可以在网站上看到示例代码。 它也可以在Safari电子书网站上在线获取,因此您可以使用试用帐户免费阅读几周。 他的书是一个非常认真的尝试,教你WPF没有XAML 阻碍与许多其他书籍的XAML重型方法形成对比。

VS2010中的可视化编辑器比前一个好得多,因此您无需了解太多XAML来创建接口。 我还建议尝试使用Expression Blend工具来查看是否可以使用其“设计器方法”来创建界面。

WPF在您选择做事的地方具有很大的灵活性。 我采用了一种更加以代码为中心的方法,并使用XAML进行布局和样式设计,但是在代码中对数据和命令进行了绑定。 这样可以提供更简洁的XAML样式,并避免您必须学习如何在XAML中指定绑定的一些细微差别。 为了简化学习过程,我建议从这种方法开始。

我还建议你开始使用MVVM模式和MVVMLite这样的框架,它将为你提供大量的基础设施,并帮助分离GUI和逻辑。