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

Jas*_*vis 5 c# wpf xaml winforms

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

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

H.B*_*.B. 11

XAML确实让事情很多更容易,如果你知道如何使用它,因为它是更具可读性和声明,但你可以做的C#代码(几乎)什么,以及如果你喜欢.

例如

<Border BorderBrush="Red">
    <TextBlock Text="Lorem Ipsum"/>
</Border>
Run Code Online (Sandbox Code Playgroud)

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;
Run Code Online (Sandbox Code Playgroud)

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

new Border
{
    BorderBrush = Brushes.Red,
    Child = new TextBlock
    {
        Text = "Lorem Ipsum"
    }
};
Run Code Online (Sandbox Code Playgroud)

通常我总是建议使用XAML,原因包括:

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


Jar*_*Par 5

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

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