2008-10-07 61 views
5

爲什麼在xaml中有兩種引用。模式名稱空間和WPF中的程序集引用有什麼區別?

一個看起來是這樣的:

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

但是我的是這樣的:在回答

xmlns:local="http://myschema.mydomain.com/MyControlNamespace 

感謝ixlettervariables

xmlns:WPFToolKit="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit" 

爲什麼我不能這樣做。這裏有一個詳細的解釋here

回答

7

第二個實例基本上是一個未映射,但顯式引用到程序集中的命名空間。第一個實例是對由項目引用的某個程序集中的名稱空間的映射引用。 XAML Namespaces and Namespace Mapping,經在MSDN解釋對此進行了更詳細地:

WPF定義了一個由XAML處理器以多個CLR命名空間映射到單個XML命名空間消耗的CLR屬性。該屬性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")] 
0

架構參考使用標準的XAML元素,編譯器知道如何直接映射到內置在WPF類中。

CLR名稱空間引用是編譯器的一個提示,當將名稱空間名稱空間中的XML元素映射到CLR/WPF類時,該名稱空間和命名空間將用於查找。

相關問題