1.核心命名空间
1.xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"是silverlight的核心命名空间,包含所有了的silverlight的核心类。比如usercontrol和grid等.通常此命名空间声明时没有加前缀,因此它成为了整个文档的的默认命名空间。换句话说就是
页面所有的元素都默认的属于此命名空间,除非声明了其它的。
2.xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 表示XAML的命名空间。此命名空间的前缀为x。你可以通过把命名空间放在一个XML元素名称或属性前使用它(例如:x:Class="CheckNamespace.MainPage"
核心命名空间主要是让XAML解析器找到正确的类。比如,当遇到Grid和UserControl时,解析器发现它在http://schemas.microsoft.com/winfx/2006/xaml/presentation命名空间下。然后继续寻找相对应的SilverLight对应的类,直到找到匹配的类system.Windows.Usercontrol和System.Windows.Controls.Grid为止。
2.设计命名空间
和核心命名空间相对应的还有两个不是太重要的命名空间:
1.xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 表示XAML的兼容性命名空间,告诉XAML解析器哪些信息可以忽略或者哪些信息需要处理
2.xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 为特定的XAML设定的命名空间,通常在Blend中支持。主要是用来设置页面设计时的大小
比如 mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="400",mc属于http://schemas.openxmlformats.org/markup-compatibility/2006,它告诉XAML解析器忽略页面内以d开头的信息是安全。
DesignHeight和DesignWidth属性是http://schemas.microsft.com/expression/blend/2008的一部分。它告诉VS或Blend在设计时显示页面大小为300*400
3.自定义命名空间
多数情况下需要在XAML中访问自己的命名空间,最常见的就是引用第三方组件或使用自己创建的silverlight自定义控件。如果是这样,需要定义一个新的XML名空间前缀并指向你的程序集。比如
<UserControl x:Class="CheckNamespace.MainPage"
xmlns:a="clr-namespace:AAA;assembly=AAALibrary"
XML命名空间包含三个部分
1.xml命名空间前缀:在XAML页面中使用xml命名空间前缀指向命名空间。比如此例子中的a,也可以使用其它自己想要的的前缀,但不允许和已有的重复,否则会发生冲突。
2.NET命名空间:在此例子中,类在AA命名空间下。如果在多个页面中使用相同的类,可以指向不同的XML命名空间或者相同的(只要和其它的不冲突)。
3.程序集:本例子中,使用到的类是AALibrary程序集一部分。silverlight会在放置你项目程序集相同的XAP包中寻找此程序集。
注意:silverlight使用了一个精简版的CLR。因此silverlight程序不能使用完整版的.NET类库。如果需要使用程序集,可以在VS中选择silverlight类库项目模板来创建一个silverlight类库。
如果使用的自定义控件位于当前应用程序内,就可以省略命名空间的程序集部分,比如
xmlns:b="clr-namespace:AAA"
在引用命名空间后,就可以在XAML文档任何地方使用,比如AAA命名空间下有一个叫MyButton的自定义控件,可以这样使用
<b:MyButton x:Name="btnTest" Click="btnTest_Click"/>