1.标记扩展
将一个对象的属性值依赖在其他其他对象的某个属性上
用法:标记属性的一般用法是:Attribute = Value,使用标记拓展,Value字符串是由一对花括号及其括起来的内容组成,XAML编译器会对这样的内容作出解析、生成相应的对象
例如:
<Window x:Class="标记拓展.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>
<StackPanel Background="LightSlateGray">
<TextBox Text="{Binding ElementName=slider1,Path=Value,Mode=OneWay}" Margin="5"></TextBox>
<Slider Name="slider1" Margin="5"></Slider>
</StackPanel>
</Grid>
</Window>
TextBox的Value值依赖在Slider的Value上
以上的写法相当于:
<TextBox Margin="5">
<TextBox.Text>
<Binding ElementName="slider1" Path="Value" Mode="OneWay"></Binding>
</TextBox.Text>
</TextBox>
不这也写的原因是,代码量增加了、阅读不方便
注意:并不是所有对象都可以用标记拓展的语法来写,只有MarkupExtension类的派生类才能使用标记拓展的语法来创建对象
2.代码后置Code-Behind
将逻辑代码与UI代码分离,隐藏在UI代码后面的形式
可以使用x:Code标签,把应该呆在后置代码里的C#代码搬到XAML文件来,例如:
<Window x:Class="代码后置.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>
<Button Name="button1" Click="button1_Click_1"></Button>
</Grid>
<x:Code>
<![CDATA[
private void button1_Click_1(object sender, RoutedEventArgs e)
{
MessageBox.Show("ABC");
}
]]>
</x:Code>
</Window>
3.导入程序集和引用其中的命名空间
1)在XAML中引用命名空间的语法是:
xmlns:映射名=“clr-namespace:类库中名称空间的名字;assembly=类库文件名”
比如类库程序集名为:MyLibrary.dll,其中包括Common和Controls两个名称空间,在XAML中引用会是:
xmlns:common=“clr-namespace:Common;assembly=MyLibrary”
xmlns:controls=“clr-namespace:Controls;assembly=MyLibrary”
2)使用命名空间里的类:
<映射名:类名>...</映射名:类名>
比如:
<common:MessagePanel x:Name="window1" />
4.注释
语法:<!--被注释的内容-->
注意:
1)只能出现在开始标签和结束标签之间
2)不能注释标签的Attribute
3)注释不能嵌套