4

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

<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:

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

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

无法理解文章对 WPF 设计器加载失败进行故障排除是否适用。

4

2 回答 2

1

您能否尝试在一个全新的项目上重现该问题,而不是编辑您现有的项目?你不能拥有

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

因为您需要将命名空间添加到“x:class”并将“x:Name”值更改为与类名不同。当我按照您的描述和修复此类错误创建一个干净的项目时,设计器工作正常。您可能会从您认为不重要的问题中省略一些细节,但这些细节可以发挥重要作用。

于 2010-02-26T12:01:36.557 回答
1

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

更新:似乎有些人,尤其是 Joel Cochran,在使用 Expression Blend 设计视图时取得了更大的成功,只要您在 XAML 开发中遵守他的 MVVM 四个原则。

于 2010-04-19T19:23:56.723 回答