2010-02-18 77 views
4

我有一個WPF用戶控件,像這樣綁定所引用轉換器:XAML設計師「找不到類型」時,轉換器在UserControl.Resources

<UserControl x:Class="MyControl" x:Name="MyControl" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:TheMainNamespaceOfThisAssembly"> 

    <UserControl.Resources> 
     <local:ConfidenceColorConverter x:Key="ConfidenceColorConverter"/> 
    </UserControl.Resources> 

我後來使用綁定轉換器。我在設計窗口中看到用戶控件。然後我編譯,然後將這個用戶控件放在我的主窗口中。我運行它,它的工作原理。但是,我仍然希望在主窗口上使用設計器,該主窗口會打破:

無法創建「MyControl」類型的實例。

所以我學了how to debug the designer;當我這樣做時,我得到一個XamlParseException:

無法找到類型'TheMainNamespaceOfThisAssembly.ConfidenceColorConverter'。編譯時使用的程序集可能與加載時使用的程序集不同,並且類型缺失。標記文件錯誤...

如果刪除對轉換器的引用,我的用戶控件會在主窗口的設計器中顯示出來。 任何想法如何解決我對轉換器的引用,使他們不會打破設計師?

無法理解文章Troubleshooting WPF Designer Load Failures是否適用。

+0

由於類名和密鑰類似,我無法獲得任何錯誤,所以我刪除了我的答案。我必須問明顯的問題:你在程序集中有一個名爲'ConfidenceColorConverter'的類,對吧?它是公開的嗎? – 2010-02-18 19:01:05

+0

是的; ConfidenceColorConverter,MyControl和MainWindow都位於項目名稱空間TheMainNamespaceOfThisAssembly的同一項目中。 – 2010-02-18 21:24:22

+0

請嘗試在乾淨的項目上重現此內容。這*不應該*失敗,所以重現它是很重要的,沒有任何項目的奇怪副作用。 – Sander 2010-02-26 16:52:03

回答

1

在與他人交談之後,VS2008設計師遇到許多問題,無法在很多情況下使用它。我們放棄了。

更新:只要您在XAML開發中服從他的four principles of MVVM,似乎有些人,特別是Joel Cochran,正在使用Expression Blend設計視圖獲得更多成功。

1

請問您可以嘗試在乾淨的新項目上重現問題,而不是編輯現有的項目?你不能有

<UserControl x:Class="MyControl" x:Name="MyControl"... 

,你會需要一個命名空間添加到「X:類」和改變「X:名稱」的數值從類名稱不同。當您描述並修復這類錯誤時,設計師工作良好,當我創建一個乾淨的項目時。您可能會忽略一些您認爲不重要的問題的細節,但這些細節可能會有所不同。

+0

嘗試使用命名約定,其中私有字段和XAML鍵是camelCase,類和類型是PascalCase。 – 2010-02-28 16:50:10

+0

@Danny Varod - 嗯? – 2010-03-01 00:07:21

+0

我嘗試將x:name更改爲「thisControl」,同時將MyControl保留爲類名稱。我嘗試使用轉換器創建一個新項目,作爲在用戶控件內的綁定上使用的資源,以及在Window中使用的用戶控件。斯坦尼斯拉夫說這確實有效。 然後,我將原始項目中的Window和用戶控件簡化爲除命名空間和XAML所需的內容(匹配近乎空的測試項目),並且仍然出現錯誤。我即將把用戶控件的代碼隱藏到最低限度。 – 2010-03-01 00:10:46

相關問題