- WPF教程
- WPF-主页
- WPF - 概述
- WPF - 环境设置
- WPF - 你好世界
- WPF - XAML 概述
- WPF - 元素树
- WPF - 依赖属性
- WPF - 路由事件
- WPF - 控件
- WPF - 布局
- WPF - 布局嵌套
- WPF - 输入
- WPF-命令行
- WPF - 数据绑定
- WPF - 资源
- WPF - 模板
- WPF - 样式
- WPF - 触发器
- WPF-调试
- WPF - 自定义控件
- WPF - 异常处理
- WPF - 本地化
- WPF-交互
- WPF - 2D 图形
- WPF - 3D 图形
- WPF-多媒体
- WPF 有用资源
- WPF - 快速指南
- WPF - 有用的资源
- WPF - 讨论
WPF - XAML 概述
使用 WPF 时首先遇到的事情之一就是 XAML。XAML 代表可扩展应用程序标记语言。它是一种基于 XML 的简单声明性语言。
在XAML中,很容易创建、初始化和设置具有层次关系的对象的属性。
它主要用于设计 GUI,但也可用于其他目的,例如在 Workflow Foundation 中声明工作流。
基本语法
当您创建新的 WPF 项目时,您将在 MainWindow.xaml 中默认遇到一些 XAML 代码,如下所示。
<Window x:Class = "Resources.MainWindow" xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" Title = "MainWindow" Height = "350" Width = "525"> <Grid> </Grid> </Window>
上面的 XAML 文件包含不同类型的信息。下表简要说明了各个信息的作用。
信息 | 描述 |
---|---|
<窗口 | 它是根的开放对象元素或容器。 |
x:Class = "资源.MainWindow" | 它是一个分部类声明,它将标记连接到后面定义的分部类代码。 |
xmlns = “http://schemas.microsoft.com/win fx/2006/xaml/presentation” | 映射 WPF 客户端/框架的默认 XAML 命名空间 |
xmlns:x = “http://schemas.microsoft.com/w infx/2006/xaml” | XAML 语言的 XAML 命名空间,将其映射到 x: 前缀 |
> | 根的对象元素结束 |
<网格> </网格> |
它是空网格对象的开始和结束标签。 |
</窗口> | 关闭对象元素 |
XAML 的语法规则几乎与 XML 类似。如果您查看 XAML 文档,您会发现它实际上是一个有效的 XML 文件,但 XML 文件不一定是 XAML 文件。这是因为在 XML 中,属性的值必须是字符串,而在 XAML 中,它可以是不同的对象,这称为属性元素语法。
Object 元素的语法以左尖括号(<) 开头,后跟对象的名称,例如Button。
定义该对象元素的一些属性和属性。
对象元素必须以正斜杠 (/) 结束,紧接着是直尖括号 (>)。
没有子元素的简单对象示例
<Button/>
具有某些属性的对象元素示例
<Button Content = "Click Me" Height = "30" Width = "60" />
定义属性的替代语法示例(属性元素语法)
<Button> <Button.Content>Click Me</Button.Content> <Button.Height>30</Button.Height> <Button.Width>60</Button.Width> </Button>
具有子元素的对象示例:StackPanel 包含 Textblock 作为子元素
<StackPanel Orientation = "Horizontal"> <TextBlock Text = "Hello"/> </StackPanel>
为什么在 WPF 中使用 XAML
XAML 不仅是 WPF 最广为人知的功能,而且也是最容易被误解的功能之一。如果你接触过WPF,那么你一定听说过XAML;但请注意以下关于 XAML 的两个鲜为人知的事实 -
- WPF 不需要 XAML
- XAML 不需要 WPF
它们实际上是可分离的技术。为了了解这是怎么回事,让我们看一个简单的示例,其中使用 XAML 中的一些属性创建按钮。
<Window x:Class = "WPFXAMLOverview.MainWindow" xmlns = "http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x = "http://schemas.microsoft.com/winfx/2006/xaml" Title = "MainWindow" Height = "350" Width = "604"> <StackPanel> <Button x:Name = "button" Content = "Click Me" HorizontalAlignment = "Left" Margin = "150" VerticalAlignment = "Top" Width = "75" /> </StackPanel> </Window>
如果您选择不在 WPF 中使用 XAML,那么您也可以使用过程语言实现相同的 GUI 结果。让我们看一下同一个示例,但这一次,我们将用 C# 创建一个按钮。
using System.Windows; using System.Windows.Controls; namespace WPFXAMLOverview { /// <summary> /// Interaction logic for MainWindow.xaml /// </summary> public partial class MainWindow : Window { public MainWindow() { InitializeComponent(); // Create the StackPanel StackPanel stackPanel = new StackPanel(); this.Content = stackPanel; // Create the Button Button button = new Button(); button.Content = "Click Me"; button.HorizontalAlignment = HorizontalAlignment.Left; button.Margin = new Thickness(150); button.VerticalAlignment = VerticalAlignment.Top; button.Width = 75; stackPanel.Children.Add(button); } } }
当您编译并执行 XAML 代码或 C# 代码时,您将看到如下所示的相同输出。
从上面的示例可以清楚地看出,您可以在 XAML 中创建、初始化和设置对象属性,也可以使用代码完成相同的任务。
XAML 只是另一种简单易用的 UI 元素设计方法。
使用 XAML,并不意味着设计 UI 元素是唯一的方法。您可以在 XAML 中声明对象或使用代码定义它们。
XAML 是可选的,但尽管如此,它仍然是 WPF 设计的核心。
XAML 的目标是使视觉设计人员能够直接创建用户界面元素。
WPF 旨在使通过标记控制用户界面的所有视觉方面成为可能。