什么是每个WPF文件中的xmlns?
什么是xmlns
?
在创buildWPF项目时,它在XAML文件中起什么作用?
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。
- StackPanel – 因为它是一个非限定名称,它将在WPF的默认名称空间中parsing
- 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规范一致。
希望这可以帮助。
- 在WPF窗口中获取当前的焦点元素/控件
- ListBox与ListView – 如何select数据绑定
- 如何手动重新加载WPF的Visual Studiodevise器
- WPFbutton中的多行文本
- C#应用程序中的资源和embedded式资源有什么区别?
- WPF MVVM为什么使用ContentControl + DataTemplate Views而不是直观的XAML Window Views?
- 如何将颜色转换为XAML中的画笔?
- Moq +unit testing – System.Reflection.TargetParameterCountException:参数计数不匹配
- WPF ControlTemplate与UserControl