0

顯然,WinRT在XAML上的XML名稱空間支持發生了變化。那麼,有沒有辦法在WinRT中使用URI作爲命名空間?例如:可能在WinRT XAML中使用URI作爲XML名稱空間?

xmlns:mine="http://myuri" 

並且mine命名空間指向我的程序集之一嗎?我已經在Silverlight中看到了這個過程。現在它在WinRT中如何工作?

回答

0

XmlnsDefinitionAttribute在WinRT XAML中不可用,但也許您可以執行IXamlMetadataProvider並定義XmlnsDefinitions以實現相同的效果。我只是想知道那個昨天。顯然你可以實現接口,並且XAML解析器在解析你的XAML時將使用你的實現。如果你檢查你的obj文件夾,你可以看到VS自動生成一個XamlTypeInfo.g.cs文件,該文件用於解析XAML而不使用反射。它可能會闡明如何實現自己的版本。讓我們知道怎麼回事。

+0

我見過的XamlTypeInfo的東西,但是這似乎並沒有引用IXamleMetaDataProvider所有..我真不明白它做什麼(我直接與IL工作,所以我已經在XamlTypeInfo中重寫了大約3周的東西了......並且我對它的實際功能或工作原理幾乎一無所知) – Earlz

+0

啊,它只是讓'App'成爲IXamlMetaDataProvider ...我在尋找_XamlTypeInfo命名空間。有一點奇怪的是,WinRT本身是如何工作的?我的意思是他們使用URI作爲他們的命名空間,但默認的GetXmlnsDefinitions只是返回一個空數組 – Earlz

+0

不知道。我之前沒有實現過接口,只是注意到它允許聲明一個XmlnsDefinition對象列表,並且在解析XAML和實例化對象時讀取它用來代替反射,所以我認爲它可以爲你工作。我只是不確定在哪裏實現接口,因爲App對象已經生成了一個實現。也許一個隨機控制添加到樹會很好,但它感覺不正確... –

0

發現了一些令人鼓舞的信息: http://www.sharpgis.net/post/2013/05/30/Decoding-the-IXamlMetadataProvider-interface-Part-1

所以自動生成的代碼會自動檢測到我的自定義 庫有嵌入的第二元數據提供者,並將其注入到 這個名單以及自動 - 生成一個。所以看起來我們 應該能夠提供我們自己的實現,我會稍後返回 。

,並在http://www.jaylee.org/post/2012/03/07/Xaml-integration-with-WinRT-and-the-IXamlMetadataProvider-interface.aspx