2. XAML
1. 什么是 XAML
XAML 可以说是 XML 的一个特殊子集,使用相同的语法,只是 XML 可以自定义任何的节点和属性,但 XAML 是有所限制的,只能在规定的命名空间下使用。
2. namespace
XAML 所受的限制即 namespace。
x:Class="WhatIsXAML.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:WhatIsXAML"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
XAML 的命名空间其实和 C# 里的命名空间差不多,都是为了做限定。而 http://schemas.microsoft.com/winfx/2006/xaml/presentation 这种类似网址的命名空间其实并不能跳转,只是一个单纯字符串,没有太多的意义。目前在此不对这做太多介绍,只要知道一般情况下不要更改默认的命名空间即可。
3. 默认属性、复杂属性
默认属性即控件中不需声明即可解析的属性,如 Button 中的 Content,TextBlock 中的 Text:
<Button Content="Click Me"/> <Button>Click Me</Button> <TextBlock Text="123"/> <TextBlock>123</TextBlock>
复杂属性是指在 XAML 中可简单以字符串声明但其实在 C# 中却要声明对象复杂实现的属性,如 Margin,HorizontalAlignment 等:
<Button Name="clickMeButton" Height="150" Width="200" Background="Red" Margin="20,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Content="Click Me!"/>
Button myButton = new Button(); myButton.Height = 150; myButton.Width = 200; myButton.Margin = new Thickness(20, 20, 0, 0); myButton.Background = new SolidColorBrush(Colors.Red); myButton.Content = "Click Me!"; myButton.HorizontalAlignment = HorizontalAlignment.Left; myButton.VerticalAlignment = VerticalAlignment.Top;
4. TypeConverter
复杂属性的实现其实靠的是 TypeConverter。
5. 注释
XAML 利用 <!-- --> 注释:
<!-- <Button Name="clickMeButton" Height="150" Width="200" Background="Red" Margin="20,20,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" Content="Click Me!" Click="clickMeButton_Click"/> -->
原视频链接: