在我深入学习之前,我想问一下,XAML文件是构建WPF应用程序的唯一方法吗?是否有更简单的方法?我知道我可以学习使用WinForms,因为你基本上只需要使用一个Form对象来编写代码,但是如我所提到的,我认为构建WPF应用程序最好。
<Border BorderBrush="Red">
<TextBlock Text="Lorem Ipsum"/>
</Border>
vs.
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"
}
};
DataTemplates
。使用FrameworkElementFactories
进行构造已被弃用,取而代之的是使用XamlParser
(我绝对不建议在代码中搞弄XAML字符串)。XAML并非构建WPF应用程序的唯一方法。在通过几个工具运行XAML之后,它自身被转换为C# / IL,这些代码用于实际构建UI。没有什么阻止你手写完全相同的代码并构建WPF表单。
然而,我要警告你考虑不采取此方法。 XAML当然是构建WPF应用程序的首选工具。它将出现在绝大部分网络示例中。手写WPF应用程序的示例要少得多。
是的,你可以编写纯WPF代码,但我不建议这样做。
Petzold的书《Application = Code + Markup》在使用XAML之前会先向你介绍如何使用纯WPF。这本书二手市场上很容易找到,你还可以在官网上查看示例代码。此外,该书也可以在线阅读,如果你有试用账户,可以免费阅读几周。相比于其他书籍中大量使用XAML的方式,《Application = Code + Markup》试图通过教授无XAML的WPF来让你更好地理解。
VS2010中的可视化编辑器要比之前的版本好得多,因此你不一定需要了解太多的XAML就能创建界面。我还建议尝试使用Expression Blend工具,看看是否能习惯其“设计师”式的创建界面方法。
在WPF中,你可以在任意位置进行操作。我采用更加侧重于代码的方式,在XAML中只处理布局和样式,数据和命令的绑定则通过代码实现。这样可以使XAML更加简洁,避免了在XAML中指定绑定的一些细节,为了方便学习,我建议从这种方式开始。
我还建议你使用MVVM模式,并使用像MVVMLite这样的框架,它会为你提供许多基础设施,并有助于分离GUI和逻辑。
虽然你可以在代码后端构建一切,但XAML是构建WPF应用程序的简单方法。以这种方式做事情还有助于将视图与程序逻辑分离。理想情况下,一个WPF开发团队至少应该包括一名负责XAML(或视觉方面)的程序员/设计师。他们将制作动画和其他视觉元素。还应该有至少一名“普通”开发人员负责编程逻辑和数据模型类型等事务。当然,这不是一个理想的世界。
不,你不必这样做,但正如@H.B.所说,这会使它更容易。
如果你使用像Visual Studio这样的IDE,就像WinForms一样,你有一个设计师加上Expression Blend。如果你发现XAML一开始很难理解,也许可以先玩一下那个,而不是直接进入XAML。