2010-05-03 52 views
32

我已經開始使用XmlnsDefinition屬性將一些CLR名稱空間綁定到一個xmlns中,以方便XAML。如何使XmlnsDefinition在本地程序集上工作?

不幸的是,這似乎只適用於使用外國程序集。如果我在與XmlnsDefinition引用的名稱空間中的類型相同的程序集中有XAML文件,那麼編譯器會提供有關在我定義的xmlns中不存在的類型的錯誤。

將該類型移至外部程序集可修復該問題。

是否有一種方法可以在程序集上使用XmlnsDefinition,並通過XAML從該程序集中使用它?

回答

40

不幸的是,沒有。在構建程序集之前,必須先解析XAML文件,以生成包含在程序集中的XAML隱含的代碼。 XAML編譯器在文件後面生成代碼(以.g.cs結尾的文件),然後這些文件將成爲包含XAML文件的程序集的一部分。由於該程序集尚未構建,因此XAML編譯器無法加載它來確定已指定XmlnsDeclaration屬性。

1

改爲使用clr-namespace。例如:

xmlns:controls="clr-namespace:Rhapsody.UI.Main.Controls 
相關問題