当你在Xaml中使用Button, ListBox, Slider, Path等元素时,Parser从WPF提供的Assembly(程序集)中可以找到并使用其定义。当你使用自己定义的或者第三方提供的元素时,你就需要告诉parser从哪个assembly中load此类型。即使是对于本project/assmebly中自定义的类,在本project中的XAML中使用也需要有这样的指令。
Mapping URI的格式是
clr-namespace:<clr namespace>[;assembly=<assembly name>]。
使用Mapping URI的具体步骤如下:
clr-namespace:<clr namespace>[;assembly=<assembly name>]。
使用Mapping URI的具体步骤如下:
- 在使用自定义类的XAML的Root element中定义合适的Xml名称空间前缀(Prefix)。Xml名称空间前缀是可以由你提供的唯一确定的值。比如teched.
- 如果自定义类和XAML处在同一个Assembly之中,只还需要提供clr-namespace值。ClrNamespace为该自定义类所在的名称空间,举例
xmlns:teched="clr-namespace:TechEdDataBinding" - 如果自定义类和XAML处在不同的Assembly之中(此情形应该更加普遍)。除了clr-namespace值外,还必须提供assembly的值,为包含自定义类的Assembly Name.举例:
xmlns:teched="clr-namespace:TechEdDataBinding;assembly=TechEdGift"
- 如果自定义类和XAML处在同一个Assembly之中,只还需要提供clr-namespace值。ClrNamespace为该自定义类所在的名称空间,举例
- 这样在XAML中就可以通过namespace prefix和类名使用自定义的元素了。举例:
< teched:Gift x:Key = "wv"Description="Windows Vista Cap"Count="1"Company="Amc"/>
在1.1的情形下,也可以写成
xmlns:teched="clr-namespace:TechEdDataBinding;assembly="
xmlns:teched="clr-namespace:TechEdDataBinding;assembly="
但是这不是提倡的写法。
clr-namespace和assembly的拼写必须都是小写。