本文主要是介绍照猫画虎WPF之一:命名空间,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
转自:http://www.cnblogs.com/leep2007/archive/2012/03/09/2378370.html
开发语言会将常用功能以类的形式封装,开发人员根据自己的业务需求,也会封装满足自身业务需求的类,如果有序组织这些类?一方面,便于开发人员准确调用;另一方面,编译器可以有效识别具有相同命名的类,就引入了命名空间,简单的说,是通过类似树状结构来组织各种类,是一种较为有效的类名排列方式。
而XAML和.NET其他语言一样,也是通过命名空间有效组织起XAML内部的相关元素类,这里的命名空间与.NET中的命名空间不是一一对应的,而是一对多,都一眼望去,都是“网址”这里的网址,是遵循XAML解析器标准的命名规则,而不是真正的网址(在IE中根本打不开)。例如
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
对应的.NET的命名空间:
. System.Windows
. System.Windows.Automation
. System.Windows.Controls
. System.Windows.Controls.Primitives
. System.Windows.Data
. System.Windows.Documents
. System.Windows.Forms.Integration
. System.Windows.Ink
. System.Windows.Input
. System.Windows.Media
. System.Windows.Media.Animation
. System.Windows.Media.Effects
. System.Windows.Media.Imaging
. System.Windows.Media.Media3D
. System.Windows.Media.TextFormatting
. System.Windows.Navigation
. System.Windows.Shapes
包含了XAML基本的布局和控件。
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"对应一些与XAML语法和编译相关的CLR名称空间。
例如, <Style x:Key="buttonMouseOver" TargetType="{x:Type Button}">
这里的xmlns和xmlns:x,区别在于x作为http://schemas.microsoft.com/winfx/2006/xaml别名,在应用时,以前缀形式出现,而xmlns作为默认命名空间,不使用前缀标识的元素,来自该命名空间。
如果添加.NET的命名空间,其引用格式如下:xmlns="clr-namespace:System.Data.Odbc;assembly=System.Data"
clr-namespace:System.Data.Odbc 导入的命名空间
assembly=System.Data 命名空间所在程序集
举个例子说明,开发一个自定义的TextBox控件,使带有默认文本和背景颜色。
自定义控件为:
namespace MySpace.MyControl
{
class MyControl:TextBlock
{
public MyControl()
{
this.Text = "自定义TextBlock!";
this.Foreground = new SolidColorBrush(Color.FromArgb(255, 255, 0, 0));
}
}
}
XAML中添加引用,并实例化该自定义控件
<Page x:Class="MySpace.Page1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
xmlns:local="clr-namespace:MySpace.MyControl"
d:DesignHeight="300" d:DesignWidth="300"
Title="Page1" >
<Grid>
<local:MyControl Width="100" Height="50">
</local:MyControl>
</Grid>
</Page>
显示结果为
这里,导入自定义控件的命名空间时,没有指定"assembly=****”,是因为采自定义控件是以类的形式存在于项目中,而非DLL,如果封装成DLL时,需要添加引用并指定该内容。
这篇关于照猫画虎WPF之一:命名空间的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!