为什么xaml中有两种引用。
一个看起来像这样:
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
但是我看起来像这样:
xmlns:WPFToolKit="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit"
为什么我不能这样做:
xmlns:local="http://myschema.mydomain.com/MyControlNamespace
感谢ixlettervariables的回答。以下是详细解释here
答案 0 :(得分:7)
第二个实例基本上是对程序集中命名空间的未映射但显式的引用。第一个实例是对项目引用的某个程序集中的命名空间的映射引用。 XAML Namespaces and Namespace Mapping,在MSDN上更详细地解释了这一点:
WPF定义了XAML处理器使用的CLR属性,以便将多个CLR命名空间映射到单个XML命名空间。此属性XmlnsDefinitionAttribute放置在生成程序集的源代码中的程序集级别。 WPF程序集源代码使用此属性将各种常见名称空间(如System.Windows和System.Windows.Controls)映射到http://schemas.microsoft.com/winfx/2006/xaml/presentation名称空间。
因此,通过将以下内容添加到程序集中,您可以这样做:
[assembly:XmlnsDefinition("http://myschema.mydomain.com/MyControlNamespace", "My.Control.Namespace")]
答案 1 :(得分:0)
模式引用用于标准XAML元素,编译器知道如何直接映射到内置WPF类。
CLR命名空间引用是编译器的提示,在将命名空间命名空间中的XML元素映射到CLR / WPF类时,可以查找这些命令和命名空间。