24

我在 xaml 中收到类似“类型引用找不到名为‘Sign’的公共类型”的错误。我该如何解决。Sign 类在同一个程序集中。

<DataTemplate DataType="{x:Type local:Sign}">
    <Expander Padding="4"
              IsExpanded="{Binding RelativeSource={
                    RelativeSource Mode=FindAncestor, AncestorType={
                       x:Type ListBoxItem}}, Path=IsSelected}">
        <Expander.Header>
            <TextBlock Text="{Binding Name}" ... />
        </Expander.Header>
        <DockPanel LastChildFill="True">
            <Border DockPanel.Dock="Left" CornerRadius="16" BorderBrush="WhiteSmoke" Background="AliceBlue" BorderThickness="5" HorizontalAlignment="Center" VerticalAlignment="Center">
                <Image Source="{Binding Icon}" Width="90" Height="90" Stretch="Fill" />
            </Border>
            ...
        </DockPanel>                
    </Expander>

4

6 回答 6

66

如果该类型与您正在修改的 XAML 位于同一程序集中,请在导入命名空间时省略 clr-namespace 的程序集段。

xmlns:local="clr-namespace:NamespaceContainingSignClass"

不要

xmlns:local="clr-namespace:NamespaceContainingSignClass;assembly=AssemblyContainingSignClassAndXAML"
于 2013-04-16T18:25:46.100 回答
13

对于那些在我的船上没有得到谷歌这个错误的前 1,00 个结果的帮助的人......在我的情况下,这与 smelch 的建议完全相反:我必须在最后添加装配信息我的 xmlns 声明。我猜可能是因为我的特殊情况 - 我的数据模板位于独立的资源字典 xaml 文件中。没有把握。我只知道它在我添加装配信息之前没有用,所以对于那些在外面挣扎的人来说,试试看它是否有效。我不倾向于深入研究为什么,它就是这样做的。

于 2013-11-20T16:46:25.247 回答
8
  1. 检查 xaml 文件的根标记是否具有将类Sign映射到local别名的命名空间:xmlns:local="clr-namespace:NamespaceContainingSignClass"
  2. 检查班级是否Sign被标记public
  3. 检查类是否有无Sign参构造函数
于 2012-05-04T07:17:41.730 回答
4
  1. 仔细检查这个问题的所有答案——我确信其中一个是正确的,但我不知道哪一个对我有用。
  2. 保存项目,关闭 Visual Studio,重新打开 Visual Studio。
  3. 瞧,它现在神奇地起作用了,尽管没有改变任何东西。
  4. 低声向微软宣誓,继续你的生活……
于 2017-06-01T13:41:40.457 回答
1

现在遇到这个错误。问题是我从程序集中引用的类位于具有更高框架级别(4.7.2 对 4.6)的程序集中。版本对齐解决了这个问题。

于 2021-01-29T13:58:14.860 回答
0

我刚刚发现了另一个问题,这可能会导致这个问题。允许在项目名称中使用点,例如

FancyTrainsimTools.Desktop

是一个有效的项目名称。如果你在项目中使用文件夹,你可能会得到这样的结构:

FancyTrainsimTools.Desktop.Logic

如果您定义引用此文件夹中项目的数据模板,则会导致错误消息。我还使用了分层数据模板,但这给出的消息略有不同。

解决方法:

通过删除点重命名您的项目:

FancyTrainsimToolsDesktop

编辑:我尝试再次重现该问题,以报告错误,但现在一切正常......所以谜团尚未解决,不清楚如何创建工作......

于 2020-06-05T10:00:33.227 回答