XAML命名空间

<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
</Window>
xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation命名空间映射许多当前*.xaml文件使用的WPF.NET命名空间。这个一对多的映射其实使用程序集级别的
[XmlnsDefinition]特性硬编码在WPF程序集中。例如导入System.Windows命名空间:
[asembly:XmlnsDefinition(“http://schemas.microsoft.com/winfx/2006/xaml/presentation”)]
另外可以使用clr-namespace和assembly标记建立一个自定义的XML命名空间,使其映射到自定义库。
xmlns:myCtrls="clr-namespace:MyControls;assembly=MyControls"

X名称空间里的成员(如X:Class、X:Name)是专门写给XAML编译器看、用来引导XAML编译器把XAML代码编译成CLR代码的。

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

4.2x名称空间中的Attribute

4.2.1x:Class的作用是告诉XAML编译器将XAML标签的编译结果与后台中的指定类合并,使用x:Class时必须遵循以下要求:

*这个Attribute只能用于根结点

*使用x:Class的根结点的类型要与x:Class的值所指示的类型保持一致

*x:Class的值所指示的类型在声明时必须使用partial关键字

<Window x:Class="将窗体设为透明1.MainWindow"
根结点
    public partial class MainWindow : Window
保持一致 partial关键字
4.2.3x:Name XAML的标签声明的是对象,一个XAML标签对应一个对象,这个对象一般是一个空间类的实例。
x:Name的作用有两个:(1)告诉XAML编译器,当一个标签带有x:Name时除了为这个标签生成对应的实例外还要为这个实例声明一个引用变量,
这个变量名就是x:Name的值(2)将XAML标签所对应的对象的Name属性也设置为x:Name的值,并把这个值注册到UI树上,以方便查找。
使用x:Name后,XAML标签对应的实例就具有了自己的引用变量,而且这些引用变量都是类的字段。
<Grid>
        <TextBox Width="100"
                 Margin="5"
                 HorizontalAlignment="Left"
                 VerticalAlignment="Top" />
        <Button Margin="5"
                HorizontalAlignment="Right"
                VerticalAlignment="Bottom"
                Click="Button_Click"
                Content="OK" />
    </Grid>
    
     private void Button_Click(object sender, RoutedEventArgs e)
        {
            Grid grid1 = this.Content as Grid;//MainWindow.Content属性引用着Grid的实例,而Grid的实例的Children[0]又引用着TextBox的实例
            TextBox textBox = grid1.Children[0] as TextBox;
            if (string.IsNullOrEmpty(textBox.Text))
            {
                textBox.Text = "hello";
            }
            else
            {
                textBox.Text = textBox.Name;
            }
        }
代码简写过程 

<StackPanel Background="Gray">
        <StackPanel.Children><!--可以简写掉,后台可通过Children属性遍历控件-->
            <TextBox Margin="5"/>
            <TextBox Margin="5"/>
            <Button Margin="5"/>
        </StackPanel.Children>
    </StackPanel> 4.2.4 x:FieldModifier:用来改变引用变量的访问级别
<TextBox Margin="5" x:FieldModifier="public" />
<TextBox Margin="5" x:FieldModifier="private" />
4.2.5 x:Key x:Key的作用就是为资源贴上用于检索的索引,在WPF中几乎每个元素都有自己的Resource属性,
这个属性是个“Key-Value”式的集合,
只要把元素 放进这个集合,这个元素就成为资源字典中的一个条目。
   <Window.Resources>
        <sys:String x:Key="myString">Hello WPF</sys:String>
    </Window.Resources> 在XAML中访问资源<TextBox Margin="5" Text="{StaticResource ResourceKey=myString}" />
在C#中访问资源             
     private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            string str = this.FindResource("myString") as string;
            this.textBox2.Text = str;
        }
4.2.6 x:Shared:在学习x:Key时我们知道一旦我们把某些对象当作资源放进资源字典里后就可以把它检索出来重复使用,
那么,每当我们检索到一 个对象的时候,到底得到的是同一个对象,还是对象的副本呢?这就要看我们给x:Shared赋什么值了。
x:Shared一定要与x:Key配合使用, 如果x:Shared的值为true,那么得到的是同一个对象,否则x:Shared的值为false,
得到的是这个对象的一个副本。默认情况下,XAML编译器会 为资源隐藏地添加x:Shared=“true”,
也就是说,默认情况下我们得到的都是同一个对象。
4.3 x名称空间中的标记扩展 4.3.1 x:Type:其值是一个数据类型的名称
 class MyButton:Button
    {
        public Type UserWindowType { get; set; }         protected override void OnClick()
        {
            base.OnClick();
            Window win = Activator.CreateInstance(this.UserWindowType) as Window;
            if (win != null)
            {
                win.ShowDialog();
            }
        }
    }
   <StackPanel Background="Gray">
        <StackPanel.Children>
            <!--  可以简写掉,后台可通过Children属性遍历控件  -->
            <TextBox Margin="5" Text="{StaticResource ResourceKey=myString}" />
            <TextBox x:Name="textBox2" Margin="5" />
            <!--  <Button Margin="5" Click="Button_Click_1" />  -->
            <Button Content="OK" />
        </StackPanel.Children>
    </StackPanel>
<Window x:Class="_4._2.Window1"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:_4._2"
        Title="Window1"
        Width="300"
        Height="300">
    <Grid>
        <local:MyButton Margin="5"
                        Content="Show"
                        UserWindowType="{x:Type TypeName=local:MainWindow}" />
    </Grid>
</Window>
4.3.2 x:Null:显式地对一个属性赋一个空值,在C#语言中null表示空值,在XAML里x:Null表示空值 
   <Window.Resources>
        <Style x:Key="{x:Type Button}" TargetType="{x:Type Button}">
            <Setter Property="Width" Value="60"/>
            <Setter Property="Height" Value="36"/>
            <Setter Property="Margin" Value="5"/>
        </Style>
    </Window.Resources>
    <StackPanel>
        <Button Content="OK"/>
        <Button Content="OK"/>
        <Button Content="OK"/>
        <Button Content="OK" Style="{x:Null}"/>
    </StackPanel>
 
        <Button Content="Hello">
            <Button.Style>
                <x:Null/>
            </Button.Style>
        </Button>
4.3.4 x:Array作用就是通过它的Items属性向使用者暴露一个类型已知的ArrayList实例,ArrayList内成员的类型由x:Array的Type指明。 
       <ListBox Margin="5">
            <ListBox.ItemsSource>
                <x:Array Type="sys:String">
                    <sys:String>Trim</sys:String>
                    <sys:String>Tom</sys:String>
                    <sys:String>Vitor</sys:String>
                </x:Array>
            </ListBox.ItemsSource>
        </ListBox> 4.3.5 x:Static 是在XAML文档中使用数据类型的static成员,因为在XAML中不能写逻辑代码
        public static string WindowTitle = "山高水长";
        public static string ShowText { get { return "水落石出"; } }
     xmlns:local="clr-namespace:统一设置一组控件的样式"
        <TextBlock Text="{x:Static local:MainWindow.ShowText}"/>
4.4 XAML指令元素
x:Code 作用就是可以包含一些本应放置在后置代码中的C#代码,,好处是代码在同一个文件中,不好的地方是不便于以后的扩展
x:XData 把包含数据的对象成为数据源,用于把数据源中的数据提供给数据使用者的对象被称为数据提供者(Data Provider)    
<Window.Resources>
<XmlDataProvider x:Key="MyData" XPath="Properties/Fruits">
<x:XData>
<Supermarket xmlns="">
<Fruit>
<Fruit Name="Peach"/>
<Fruit Name="Banana"/>
<Fruit Name="Orangle"/>
</Fruit>
<Drinks>
<Drink Name="Coca Cola"/>
<Drink Name="PEPSI Cola"/>
</Drinks>
</Supermarket>
</x:XData>
</XmlDataProvider>
</Window.Resources>

												

9、XAML名称空间详解的更多相关文章

  1. 深入浅出WPF-04.x名称空间详解

    x名称空间详解 几个需要特别说明的名称空间: x:Class 用来标记XAML和后台代码之间的合并关系.x:Class根节点的类型必须和x:Class值指向的类型保持一致.x:Class的值指向的类型 ...

  2. WPF读书笔记 x名称空间详解(第二天)

    每天看一点,每天进步一点. x名称空间映射的是http://schemas.microsoft.com/winfx/2006/xaml,它包含的类均与解析XAML语言关,亦可称为"XAML名 ...

  3. [No000013F]WPF学习之X名称空间详解

    X名称空间里面的成员(如X:Name,X:Class)都是写给XAML编译器看的.用来引导XAML代码将XAML代码编译为CLR代码. 4.1X名称空间里面到底都有些什么? x名称空间映射的是:htt ...

  4. WPF学习之X名称空间详解

    X名称空间里面的成员(如X:Name,X:Class)都是写给XAML编译器看的.用来引导XAML代码将XAML代码编译为CLR代码. 4.1X名称空间里面到底都有些什么? x名称空间映射的是:htt ...

  5. WPF 基础 - x 名称空间详解

    名称 种类(默认Attribute) 备注 x:Array 标记拓展 可作为 ListBox.ItemsSource 的值 x:Class 指定与 .cs 中哪个类合并,所指示的类型在声明时使用 pa ...

  6. Oracle表空间详解

    Oracle表空间详解 1.表空间的分类 Oracle数据库把表空间分为两类:系统表空间和非系统表空间. 1.1系统表空间指的是数据库系统创建时需要的表空间,这些表空间在数据库创建时自动创建,是每个数 ...

  7. X--名称空间详解

    转自:http://blog.csdn.net/lisenyang/article/details/18312039 X名称空间里面的成员(如X:Name,X:Class)都是写给XAML编译器看的. ...

  8. ORACLE结构体系篇之表空间详解.md

    表空间详解一.系统表空间SYSTEM 表空间是Oracle 数据库最重要的一个表空间,存放了一些DDL 语言产生的信息以及PL/SQL 包.视图.函数.过程等,称之为数据字典,因此该表空间也具有其特殊 ...

  9. WAL日志文件名称格式详解

    转自:http://blog.osdba.net/534.html WAL日志文件名称格式详解 PostgreSQL的WAL日志文件在pg_xlog目录下,一般情况下,每个文件为16M大小: osdb ...

随机推荐

  1. 第06篇 MyEclipse 2016 安装/破解

    和玩得来的人在一起玩才叫玩! 和玩不来的人在一起玩,那种感觉就像加班啊!                                                                 ...

  2. 【JS Note】undefined与null

    在Javascript中有这两种原始类型: Undefined与Null.而这两种原始类型都各自只有一个值,分别是undefined,null. undefined: 1.变量声明后未赋值,则变量会被 ...

  3. Hibernate总结--MyEclipse的小bug

    今天笔者在写一个用S2SH的程序的时候,出现了下面的错误: org.springframework.beans.factory.BeanCreationException: Error creatin ...

  4. JavaScript之动态背景登陆表单

    <!doctype html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...

  5. mvc路由规则相关

    1,可以创建多条路由规则,每条路由规则的name属性不能相同 2,路由规则是有顺序的,如果被前面的规则匹配了,那么后面的规则就没有机会了 下面是一条路由规则的代码 routes.MapRoute( n ...

  6. 在远程系统上开发 SharePoint 应用程序

    适用范围: apps for SharePoint | Office 365 | SharePoint Foundation 2013 | SharePoint Server 2013 使用远程安装的 ...

  7. oracle发送邮件

    1.创建发送邮件的存储过程 CREATE OR REPLACE PROCEDURE send_mail(p_recipient VARCHAR2, -- 邮件接收人 p_subject VARCHAR ...

  8. 下拉框的选择跳转事件(jqure)

    <select id="coupontype"> <option value="@CouponType.全部" href="@Url ...

  9. UI2_UIGesture

    // // ViewController.h // UI2_UIGesture // // Created by zhangxueming on 15/7/9. // Copyright (c) 20 ...

  10. HTML特殊字符编码大全

    HTML特殊字符编码大全:往网页中输入特殊字符,需在html代码中加入以&开头的字母组合或以&#开头的数字.下面就是以字母或数字表示的 特殊符号大全 ´ © © > > µ ...