Wpf XAML设计器“;找不到类型";当转换器在UserControl.Resources中时

Wpf XAML设计器“;找不到类型";当转换器在UserControl.Resources中时,wpf,xaml,user-controls,designer,cider,Wpf,Xaml,User Controls,Designer,Cider,我有一个WPF UserControl,其绑定转换器引用如下: <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:TheMai

我有一个WPF UserControl,其绑定转换器引用如下:

<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”类型的实例

所以我学会了;当我这样做时,我会得到一个XamlParseException:

找不到类型“TheMainNamespaceofIsAssembly.ConfidenceColorConverter”。编译时使用的程序集可能与加载时使用的程序集不同,并且缺少类型。标记文件中出现错误

如果删除对转换器的引用,我的用户控件将在主窗口的设计器中显示良好有没有办法修复我对转换器的引用,这样它们就不会破坏设计器?


无法理解这篇文章是否适用。

请尝试在一个全新的项目上重现问题,而不是编辑现有项目,好吗?你不可能有

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

与其他人交谈后,VS2008设计器存在许多问题,在许多情况下无法使用。我们放弃了


更新:似乎有些人,特别是Joel Cochran,正在更成功地使用Expression Blend design视图,只要您在XAML开发中遵守他的要求。

由于类名和键相似,我无法得到任何类型的错误,因此我删除了我的答案。我必须问一个显而易见的问题:在程序集中确实有一个名为
ConfidenceColorConverter
的类,对吗?它是公共的吗?是的;ConferenceColorConverter、MyControl和MainWindow都在同一个项目中,项目名称空间为组件的主名称空间。请尝试在干净的项目中复制此内容。这不应该失败,所以重要的是复制它而不产生任何奇怪的副作用。我在哪里可以找到副作用的原因?它不是编译的还是只在designer中显示的?为程序集定义了哪些平台?请尝试使用命名约定,其中私有字段和XAML键是camelCase,类和类型是PascalCase。我尝试将x:name更改为“thisControl”,同时将MyControl保留为类名。我尝试创建一个新项目,将转换器作为资源用于用户控件内的绑定,并将用户控件用于窗口。这确实如斯坦尼斯拉夫所说。然后,我将原始项目中的窗口和用户控件简化为所需的名称空间和XAML(与几乎为空的测试项目相匹配),但仍然会出现错误。我将把用户控件背后的代码删除到最低限度。谢谢你的帮助,如果我知道它们可能是什么,我很乐意发布省略的细节。好吧,我想不出来。测试项目可以工作,但实际项目不能。不知道还有什么不同的尝试改变。