2010-04-28 90 views
25

我們剛剛從vs2008切換到vs2010,我們的項目編譯和運行良好,沒有任何問題。但是,xaml設計師有一些錯誤。這是其中一個錯誤,希望有人能提供解決方案。VS2010自定義標記擴展

我們有一個自定義MarkupExtension,我們在xaml中使用它來獲取某些資源。事情是這樣的:

<Button Style="{l:GetResource Key=MyButtonStyle}" />

我知道我們可以使用靜態資源或DynamicResource。不過,我們有理由使用自定義markupextension。

從設計師的錯誤信息是:

'GetResourceExtension' 是無效Setter.Value。支持的MarkupExtension類型的唯一 是DynamicResourceExtensionBindingBase或派生類型。

我的問題是,該代碼在vs2008中工作正常,並且2010年也運行良好,如何使2010年設計師工作?

+1

你在Blend中試過這個嗎?我想知道如果Cyder(VS20120 XAML設計器)它根本無法處理自定義標記擴展。它不會讓我感到驚訝,因爲它非常敏感,雖然這是一個基本的。 這個錯誤是否使設計者崩潰或者它的工作原理,它只是顯示爲一個錯誤? – 2012-01-26 11:22:41

回答

1

我已經寫了幾個標記擴展,雖然代碼運行,但我得到的Xaml錯誤就像你一直得到的那個。假設你有有效的代碼,我發現擺脫錯誤的唯一方法是通過重建選項,然後運行應用程序。

當然,問題是如果你再次改變或移動它的錯誤似乎會回來。我的假設是靜態編譯無法完全解決你的標記正在做什麼,並拋出錯誤基於此。在我的情況下,我正在寫一個方法聯編程序,因爲對象是空的,直到運行時,我最終不得不使用新的Object();並在運行時交換它。這是hacky,但編譯錯誤驅使我瘋了。

xaml解析器在2012年看起來似乎更好,但即使如此也存在奇怪的錯誤。