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 。-->
!https://www.ahbug.com/wp-content/uploads/2022/01/2b71bc67913d6b3.jpg
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。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
请登录后查看评论内容