什么是每个WPF文件中的xmlns?

什么是xmlns

在创buildWPF项目时,它在XAML文件中起什么作用?

4 Solutions collect form web for “什么是每个WPF文件中的xmlns?”

xmlns是一个XML,不一定是XAML,这个结构定义了一个用于parsingxml元素名称的名称空间。 因为它没有限定符定义,所以它定义了一个XML元素名称应该被parsing的默认名称空间。

在XAML中,您通常会看到以下条目。 它将默认名称空间定义为基本的WPF,所有的XML元素名称都被parsing为WPF元素。

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

查看非默认名称空间(如下所示)也很常见。

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

这为XAML特定元素定义了一个限定名称空间。 如果你想在这个命名空间内parsing一个元素或属性名称,你应该用x来限定它。 例如

 <StackPanel x:Name="foo" /> 

在这个定义中有2个名字parsing。

  1. StackPanel – 因为它是一个非限定名称,它将在WPF的默认名称空间中parsing
  2. x:名称 – 名称用x限定,将在XAML文档中parsing。

你也可以使用xmlns在你的XAML中获得对你自己的命名空间的引用。 我在创build一个新的WPF项目时做的第一件事就是添加对项目名称空间的引用:

 xmlns:local="clr-namespace:MyWpfProject" 

现在我可以使用“local:”前缀访问我可以在我的项目中创build的任何类(如IValueConverters和DataTemplateSelectors)

 <local:BooleanToColorConverter x:Key="booleanToColorConverter" DefaultBrush="Green" HighlightBrush="Red" /> 

当然,你不必使用“本地”,你可以任意命名。 你可以添加引用到任何其他命名空间,你需要以相同的方式。

您还可以通过将XmlnsDefinitionAttribute添加到您的程序XmlnsDefinitionAttribute ,将多个CLR名称空间映射到一个XML名称空间中。 这就是WPF团队所做的,通过映射System.Windows下的很多命名空间,如下所示:

 [XmlnsDefinitionAttribute( "http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Controls")] [XmlnsDefinitionAttribute( "http://schemas.microsoft.com/winfx/2006/xaml/presentation", "System.Windows.Ink")] 

这个语法可以简化你的XAML,但是要注意不要在你合并在一起的CLR命名空间中有相同名字的类。

从MSDN获取根元素还包含属性xmlns和xmlns:x。 这些属性向XAML处理器指示哪些XML名称空间包含标记将引用的元素的元素定义。 xmlns属性专门指示默认的XML名称空间。

xmlns用于定义使用和映射的范围与XML 1.0规范一致。

希望这可以帮助。

  • Android颜色xml资源文件中的Web颜色
  • 使用XDocument加载编码为UTF 16的xml
  • 我怎样才能通过Xml属性重命名类名?
  • Android:java.lang.ClassCastException:android.widget.imageView无法转换为android.widget.textView
  • 如何在Java中使用XPath读取XML
  • 很好用Python打印XML
  • 免费的XML格式化工具
  • 跳转到匹配Vim中的XML标签
  • 正在写元素的自闭标签不传统上是空的坏习惯?
  • 如何使用C#从XML中删除所有命名空间?
  • 未find类“DOMDocument”