命名空间
在WPF程序中,有以下几种命名空间:WPF的命名空间、xaml的命名空间、使用系统类的命名空间和使用自定义类的命名空间
- 首先介绍一下WPF的命名空间。WPF的命名空间是一个URL,即:
一个URL表示就可以全部涵盖所有用到控件的命名空间,如果在C#代码中用到这些控件,则必须连续使用using语句,直到包括所有用到的命名空间。
- 另一种常用的命名空间是XAML的命名空间。如果需要使用XAML专用的元素和属性,那么必须声明该命名空间。习惯上XAML的声明空间被声明成x前缀
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
一般使用VS2010生成的默认的XAML文件都会包含WPF和XAML命名空间的声明。
<Window x:Class="MvvmLight3.Window4"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window4" Height="300" Width="300">
<Grid>
</Grid>
</Window>
以上Window、Grid和Button属于WPF命名空间中的元素,x:CLass属于XAML命名空间中的属性,由于WPF是默认命名空间,因此Window、Grid没有声明前缀。
- 使用系统类的命名空间:XAML文件要使用其他.net对象或应用程序或其他程序集中的自定义对象便会使用该种样式。
xmlns:s="clr-namespace:System;assembly=mscorlib"
以上代码关联System命名空间,s是前缀,引号内的字符串开始是clr-namespace,用来指定命名空间,assembly用来指定程序集名称。引用时这样引用:
<s:String>
Hello!
</s:String>
- 使用自定义类:分为使用本地程序的自定义类和使用外部程序的自定义类,其中使用外部程序的自定义类基本上和使用系统类相同,就不作介绍了,介绍一下使用本地程序的自定义类。
例如本地程序中定义类一个Book类
namespace wpfApplication1
{
public class Book
{
.......
}
}
如果需要在XAML文件中使用该类,必须做如下声明:
xmlns:local="clr-namespace:WpfApplication1"
由于Book类属于本地应用程序,因此声明中省略了设置assembly。引用方法如下:
<Button>
<local:Book Name="WPF指南" Price="0.1"/>
</Button>