WPF应用程序是否要求使用XAML

本文关键字:XAML 应用程序 是否 WPF | 更新日期: 2023-09-27 18:19:44

我想学习C#,似乎每个人都在从使用WinForms转向使用WPF。WPF应用程序对我来说似乎要复杂得多,因为使用了用于构建表单的.XAML文件。

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

WPF应用程序是否要求使用XAML

XAML确实让变得更容易,如果你知道如何使用它,因为它更具可读性和声明性,但如果你愿意,你也可以在C#代码中做(几乎)任何事情。

例如

<Border BorderBrush="Red">
    <TextBlock Text="Lorem Ipsum"/>
</Border>

与。

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应用程序的样本要少得多。

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

Petzold的书Application=Code+Markup在开始使用XAML之前,将引导您从代码中使用纯WPF。它很容易买到二手的,你可以在网站上看到样例代码。它也可以在Safari电子书网站上在线获得,所以你可以使用试用帐户免费阅读几周。他的书是一个非常严肃的尝试,教你WPF,而不是XAML妨碍,这与许多其他书的XAML重方法形成了鲜明对比。

VS2010中的可视化编辑器比上一个要好得多,因此您不必了解太多XAML即可创建接口。我还建议尝试Expression Blend工具,看看你是否可以使用它的"设计器方法"来创建界面。

WPF在你选择做事的地方有很大的灵活性。我采取了一种更以代码为中心的方法,使用XAML进行布局和样式设置,但在代码中绑定数据和命令。这提供了一个更干净的XAML样式,并避免了您必须学习如何在XAML中指定绑定的一些细微差别。为了缓和学习曲线,我建议从这种方法开始。

我还建议您从使用MVVM模式开始,使用MVVMLite之类的框架,它将为您提供大量基础设施,并有助于分离GUI和逻辑。

虽然您可以在codeehind中构建所有内容,但XAML是构建WPF应用程序的简单方法。这样做也有助于将视图与程序逻辑分离。理想情况下,WPF开发团队将至少由一名程序员/设计师组成,可以说,他负责XAML(或可视化方面)。他们将制作动画和其他视觉元素。以及至少一名负责编程逻辑和数据模型类型的"正常"开发人员。当然,这不是一个理想的世界。

不,你不必这么做,但@H.B.表示这会让事情变得更容易。

如果你使用像Visual Studio一样的IDE,就像WinForms一样,你有一个设计器和Expression Blend。如果你一开始发现XAML让人不知所措,也许可以试试这个,而不是直接进入XAML。