类型引用找不到名为的公共类型

Tan*_*nya 18 c# wpf xaml

我收到错误,如"类型引用无法在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>
Run Code Online (Sandbox Code Playgroud)

sme*_*lch 53

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

xmlns:local="clr-namespace:NamespaceContainingSignClass"
Run Code Online (Sandbox Code Playgroud)

不要

xmlns:local="clr-namespace:NamespaceContainingSignClass;assembly=AssemblyContainingSignClassAndXAML"
Run Code Online (Sandbox Code Playgroud)


tnt*_*off 13

对于那些在我的船上没有得到谷歌这个错误的前1,00个结果帮助的人....在我的情况下,它与冶炼的建议完全相反:我不得不在最后添加装配信息我的xmlns声明.可能是因为我的特殊情况,我猜 - 我的datatemplate是在一个独立的resourcedictionary xaml文件中.不确定.我知道它直到我添加了汇编信息才起作用,所以对于那些在那里挣扎的人来说,这是一个重击,看看它是否有效.我不倾向于深入研究为什么,它只是做了.

  • 自己遇到这个问题,*添加*程序集名称也修复了问题.我在与类相同的程序集中的ResourceDictionary xaml文件中,但仍需要添加程序集名称. (4认同)

EvA*_*lex 8

  1. 检查xaml文件的根标记是否具有Sign映射到local别名的类的命名空间:xmlns:local="clr-namespace:NamespaceContainingSignClass"
  2. 检查班级是否Sign已标记public
  3. 检查类是否Sign具有无参数构造函数

  • 此要求基于以下事实:您无法在XAML中指定构造函数参数.在XAML中键入<Button ... />实际上意味着创建Button类实例,因此将调用构造函数.XAML是编写标记的声明性替代方法,并且在XAML中没有设计这样的东西作为构造函数参数,因为没有必要这样做:您在标记中指定属性. (3认同)
  • 哇!无参数构造函数!谢谢。我想知道为什么会有这么奇怪的要求,您是如何了解到它的? (2认同)