当转换器位于UserControl.Resources中时,XAML Designer“无法找到类型”

时间:2010-02-18 16:28:50

标签: 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:TheMainNamespaceOfThisAssembly">

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

然后我稍后使用绑定转换器。我在设计窗口中看到了用户控件。然后我编译,然后将此用户控件放在我的主窗口中。我运行它,它的工作原理。但是,我仍然想在主窗口上使用设计器,该窗口打破了:

  

无法创建“MyControl”类型的实例。

所以我学会了how to debug the designer;当我这样做时,我得到一个XamlParseException:

  

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

如果删除对转换器的引用,我的用户控件将在主窗口的设计器中很好地显示。 有任何想法如何修复我对转化器的引用,以免它们破坏设计师?

无法理解文章Troubleshooting WPF Designer Load Failures是否适用。

2 个答案:

答案 0 :(得分:1)

请问您是否可以尝试在一个干净的新项目上重现问题而不是编辑现有项目?你不能拥有

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

因为您需要将命名空间添加到“x:class”并将“x:Name”值更改为与类名不同。当我描述并修复此类错误时,设计人员可以正常工作。您可能会从您认为不重要的问题中省略一些细节,但这些细节可能会产生重大影响。

答案 1 :(得分:1)

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

更新:似乎有些人,尤其是Joel Cochran,只要你在XAML开发中服从他的four principles of MVVM,就会更加成功地使用Expression Blend设计视图。