XAML基础

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)注释不能嵌套

 

 

 

 

 

 

posted @ 2014-01-14 10:54  KeenLeung  阅读(296)  评论(0编辑  收藏  举报