1 X:Class
作用告诉XAML编译器将XAML标签的编译结果与后台代码中指定的类合并,只能用于根节点,并且与之同名的类需要有Partial 例如窗口
2 X:ClassModifier
作用告诉XAML编译器有标签编译生成的类具有怎样的访问控制级别(Public,Privare Internal Protect…..) “访问级别必须和同名类的访问级别一样”
3 X:Name
前言 一个XAML标签对应一个对象,这个对象一般是一个空间的实例,在.NET平台上类是引用类,引用类型的实例在使用时一般是以“引用者->实例“的形式成对出现的,而且我们只能通过引用者来访问实例,当实例不在被任何引用者引用则当做垃圾被销毁
例子
XAML编码
<Grid>
<TextBox x:Name="text" x:FieldModifier="public"></TextBox> <Button Content="引用解析" Click="Button_Click"></Button> </Grid>C#中使用编码
private void Button_Click(object sender, RoutedEventArgs e)
{ Grid g = this.Content as Grid;//窗体的属性Content引用着Grid的实例 TextBox t = g.Children[0] as TextBox;//Grid的实例Children[0]又引用着TextBox的实例 if (string.IsNullOrEmpty(t.Name))//判断TextBox的特征Name是否为空 { t.Text = ""; } //if (string.IsNullOrEmpty(text.Name))//判断TextBox的特征Name是否为空 //{ // text.Text = ""; //} }
使用X:Name
X:Name 为标签生成对应实例的引用,并把这个值注册到UI树上,其值即为引用变量,
4 X:FidldModifier
控件的访问级别(即控件的引用变量的访问级别)
作用:X:Name=Value Value即为控件的引用变量,默认控件的访问级别为Internal,如果需要从一个程序集访问另一个程序集窗体的控件就需要更改次特性为public
<TextBox x:Name="text" x:FieldModifier="public"></TextBox>
5 X:Key
在XMAL中我们可以把很多需要多次使用的内容提取出来放在资源字典中,需要使用这个资源的时候就使用它的X:Key检索出来(如重复使用的Style Template Data 动画等)
X:Key作用就是为资源贴上用于检索的索引
XAML编码
<Window.Resources>
<sys:String x:Key="mystring">Hello word</sys:String> </Window.Resources> <StackPanel> <TextBox Text="{StaticResource ResourceKey=mystring}"></TextBox> <TextBox x:Name="t"></TextBox> <Button Content="C#使用X:Key" Click="Button_Click"></Button> </StackPanel>C#编码
private void Button_Click(object sender, RoutedEventArgs e)
{ string str = this.FindResource("mystring") as string; t.Text = str; }
6 X:Shared
X:shared 与X:Key配合使用,X:Shared=True(默认)每次检索到这个资源对象的时候都是同一个对象,否则我们得到的是这个对象的一个新的副本
7 X:Type
X:Type的值是一个数据类型,
.Net名为Type的类作为所有数据类型在编程层面的抽象
public class MyButton:Button
{ public Type UserWindow { get; set; } protected override void OnClick() { base.OnClick(); Window main = Activator.CreateInstance(this.UserWindow) as Window; if(main!=null) { main.ShowDialog(); } } }或者
8 X:Null
显式的对一个属性赋一个空值
<Window.Resources>
<Style TargetType="TextBlock"> <Setter Property="FontSize" Value="44"></Setter> <Setter Property="Background" Value="Blue"></Setter> <Setter Property="FontStyle" Value="Italic"></Setter> </Style> </Window.Resources> <StackPanel Margin="5"> <TextBlock Text="Hello word"></TextBlock> <TextBlock Text="Hello word"></TextBlock> <TextBlock Text="Hello word" Style="{x:Null}"></TextBlock> </StackPanel>9 X:Array
X:Array的作用就是通过它的Item属性向使用者暴漏一个类型已知的ArrayList实例,其类型有X:Array的Type指定
<Grid>
<ListBox> <ListBox.ItemsSource> <x:Array Type="sys:String"> <sys:String>Time</sys:String> <sys:String>Date</sys:String> <sys:String>Mouth</sys:String> </x:Array> </ListBox.ItemsSource> </ListBox> </Grid>10 X:Static
在XAML文档中使用数据类型的statc成员(一定是数据类型的属性或字段)
C#后台代码里面定义二个静态字段
public partial class XStatic : Window
{ public static string WindowTitle = "小石潭记"; public static string ShowText { get { return "输欧输出"; } } public XStatic() { InitializeComponent(); } }XAML引用(部分代码)
Window x:Class="深入浅出WPF.View.XStatic"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="clr-namespace:深入浅出WPF.View" Title="{x:Static local:XStatic.WindowTitle}" Height="300" Width="300"> <Window.Resources> <XmlDataProvider x:Key="dataProvider" XPath="GameStates" Source="XML\XMLData.xml"></XmlDataProvider> </Window.Resources> <StackPanel> <TextBox Text="{x:Static local:XStatic.ShowText}"></TextBox>11 X:XData和X:Code (指令元素)
X:Code作用是可以在XAMl里面写C#的逻辑代码
XmlDataProvider数据提供者,XmlDataProvider提供的数据就放在X:XData标签里面
<Window.Resources>
<XmlDataProvider x:Key="xdp" XPath="FileSystem/Folder"> <x:XData> <FileSystem xmlns=""> <Folder Name="Books"> <Folder Name="Programming"> <Folder Name="Window"> <Folder Name="WPF"/> <Folder Name="WCF"/> </Folder> </Folder> <Folder Name="Tool"> <Folder Name="Java"/> <Folder Name="C#"/> <Folder Name="C++"/> </Folder> </Folder> </FileSystem> </x:XData> </XmlDataProvider> </Window.Resources>