1.xaml引用名称空间:
<xmlns:x="clr-namespace:System.Windows.Controls;"/>
引用名称空间和程序集
<xmlns:x="clr-namespace:System.Windows.Controls; assembly=PresentationFramework"/>
x:表示映射前缀,clr-namespace是命名空间前缀,assembly引用程序集前缀.
xaml各命名空间属性的含义
x:Class 告诉编译器声明的类名,与后台代码声明的类名合并;
x:ClassModifier 告诉编译器生成的类具有怎样的控制级别;
x:Name 告诉编译器除了要为这个标签生成对应的实例外,还有有一个引用变量,而变量名就是x:Name的值,同时,在UI树上,我们可以通过Name值找到该对象;
x:FieldModifier 设置类的访问级别,默认情况下这些字段的访问级别被设置成internal.在编程的时候我们需要从一个程序集访问另一个程序集中的窗体的元素,这时候就需要把被访问的控件的引用变量设置成public级别。
<TextBox x:Name="textBox1" x:FieldModifier="Public" Margin="5"/>
x:Key 作用就是为资源贴上用于检索的标签,在wpf中,几乎每个元素都有自己的Resources属性,这个属性是个“Key-Value”集合,只要把元素放到这个集合里,这个元素就成为资源字典里的一个条目,通过key可以检索这个条目,Style、Template、动画等都可以放到资源里.
x:Shared 该属性需要与x:Key配合使用,当x:Shared="true"时,表示 每次从资源字典里检索出来的对象是同一个,如果是false时,每次检索出来的对象是是一个新的副本;
命名控件里的标记扩展
x:Type 表示使用类型本身;
x:Null 使用null关键字表示空值;
x:Static 它的功能是在XAML里使用数据类型的static成员;
如:<Window x:Class="WpfApplication1.Window1"
xmlns:local="clr-namespace:WpfApplication1"
Title="{x:Static local:Window1.WindowTitle}">
</Window>
xaml指令元素
x:Code 通过<x:Code>标签可以把本应该放置在后置代码中的c#代码,放在该标签下;
x:XData 是一个专用标签,WPF把包含数据的对象称为数据源,用于把数据源中的数据提供给使用者的对象叫数据提供者。WPF有很多数据提供者,其中有一个类叫XmlDataProvider,专门提供XML化的数据,如:
<Window.Resources>
<XmlDataProvider x:Key="InventoryData" XPath="Inventory/Books">
<x:XData>
<Supermarket xmlns="">
<Fruits>
<Fruit Name="Peach"/>
</Fruits>
</Supermarket xmlns="">
</x:XData>
</XmlDataProvider>
</Window.Resources>
2. xaml里
<Window x:Class=“WpfApplication1.Window1”
意思是:该xaml声明一个class,如;public partial class Window1{}, 后续xaml内容就是该class定义的内容。
3.xaml里对元素属性赋值方式:
1)使用字符串进行简单赋值
2)使用属性元素进行复杂赋值
使用属性元素赋值格式:
<className>
<ClassName.PropertyName>
<!--定义对象,以对象的形式为属性赋值-->
</ClassName.PropertyName>
</className>
例如:
<Grid VerticalAlignment="Center" HorizontalAlignment="Center">
<Rectangle x:Name="rectangle" Width="200" Height="120">
<Rectangle.Fill>
<SolidColroBrush Color="Blue"/>
</Rectangle.Fill>
</Rectangle>
</Grid>
4.标记扩展
在WPF中允许将一个对象的属性值依赖在其他对象的某个属性上,当需要为对象的属性进行这些特殊的赋值时,就需要使用标记扩展了,标记扩展实际上时特殊的语法。
例如:<StackPanel Background="LightSlateGray">
<TextBox Text="{Binding ElementName=slide,Path=Value,Mode=OneWay}" Margin="5"/>
<Slider x:Name="slide" Margin="5"/>
</StackPanel>
这里Text="{Binding ElementName=slide,Path=Value,Mode=OneWay}"这句就是标记扩展了。当编译器看到{}时,就将{}里的内容解释成相应的对象,对象的类型就是紧邻花括号左侧的字符串,对象的属性用逗号负责分开,赋值。
5.wpf指定事件处理
例如:<Button x:Name="button1" Click="button1_Click"/>
在后台实现函数 void button1_Click(object sender,RoutedEventArgs e) {}
上面这句xaml翻译成c#代码是 Button button1 = new Button();
button1.Click+=new RoutedEventHandler(button1_Click);
因为xaml实际上是声明partial 类,因此可以将代码放到xaml里的,需要遵循格式如:
<x:Code>
<![CDATA[
private void button1_Click(object sender,RoutedEventArgs e) {}
]]>
</x:Code>