📄articles 📋snippets 📁categories ⚙️uses ✏️about 🔍search

XAML的语法概述及特性

XAML是什么

XAML是一种声明性标记语言,可以用于创建程序UI,例如形状、控件、文本、按钮等一切可以显示在屏幕上的组件。XAML具有包含元素和属性,赋予元素不同的属性来显示出来出现不同的效果。

<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
  <Button Content="This is a button !"/>
</Grid>
<!--实例化对象,在UI中创建一个按钮显示出来-->

属性元素语法

语言难以表达,用一个实例表达此含义。

<Button>
 <Button.Background><!--设置背景颜色-->
   <SolidColorBrush Color="Blue"/>
 </Button.Background>
 <Button.Foreground><!--设置前景色 显示-->
   <SolidColorBrush Color="Red"/>
 </Button.Foreground><!--按钮上的文字内容-->
 <Button.Content> This is a button </Button.Content>
</Button>

集合语法

可以理解为设置了集合属性的数值

<LinearGradientBrush.GradientStops>是集合属性,其内部可以添加多个GradientStop来实现元素渐变效果。实例如下:

<LinearGradientBrush>
  <LinearGradientBrush.GradientStops>
    <GradientStop Offset="0.0" Color="Red" />
    <GradientStop Offset="1.0" Color="Blue" />
  </LinearGradientBrush.GradientStops>
</LinearGradientBrush>
<!--LinearGradientBrush使用沿直线(渐变轴)定义的渐变绘制区域。
使用对象指定渐变的颜色及其在渐变轴上的位置 GradientStop 。-->

!

XAML内容属性

仅对内容属性而言,可以在 XAML 标记中设置该属性时省略属性元 素,并在标记中生成更直观的父级/子级形式。

<Border>
<TextBox Width="300"/>
</Border>
<Border>
 <Border.Child>
   <TextBox Width="300"/>
 </Border.Child>
</Border>

上例中第一个元素使用内容属性省略Border.Child属性元素,第二个元素显式显示Border.Child

文本内容

XAML 元素可直接将文本作为其内容来处理。 若要实现此功能,必须满足以下条件之一:

  • 类必须声明一个内容属性,并且该内容属性必须是可赋值给字符串的类型(该类型可以是 Object)。
  • 类型必须声明一个类型转换器,该类型转换器将文本内容用作初始化文本。 例如, 将 Blue 的内容值转换为画笔。 这种情况实际上并不常见。
  • 类型必须为已知的 XAML 语言基元。
<StackPanel>
 <Button>First Button</Button><!--按钮文本显示-->
 <Button>Second Button</Button>
</StackPanel>

上例中Button是StackPanel的子元素,

  • 省略了 StackPanel.Children 属性元素: StackPanel 派生自 Panel 。 Panel 将 Panel.Children 定义为其 XAML 内容属性。
  • 省略了 UIElementCollection 对象元素: Panel.Children 属性采用类型 UIElementCollection, 该类型实现 IList 。根据处理IList 等集合的XAML 规则,集合的元素标记可以省略。

特性语法(事件)

特性语法还可用于事件成员,而非属性成员。 在这种情况下,特性的名称为事件的名称。 在 XAML 事件的 WPF 实现中,特性的值是实现该事件的委托的处理程序的名称。

<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
  x:Class="ExampleNamespace.ExamplePage">
  <Button Click="Button_Click" >Click Me!</Button>
</Page>

上例中将Click事件赋予给在标记中创建的Button。

© 2022 XAML的语法概述及特性 · 本文由 Charlie 原创撰写,发布于 sodebug.com。 未经授权禁止转载、洗稿、机器抓取。AI 训练数据使用需获得书面授权。
GK
独立开发者,在 WordPress、Nginx 和各种 API 之间切换。不写没用的东西。

related相关文章

#01Python实现生日祝福代码8 min#02关于IO操作的操作的同步、异步、阻塞、非阻塞1 min#03Unity数据持久化完全指南:从PlayerPrefs到SQLite9 min
$ echo "less bullshit, more debugging" | send-to-inbox
新文章直接发到邮箱,一个月 2-4 封。
$ subscribe →