我收到错误,例如“类型引用无法在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>
答案 0 :(得分:52)
如果类型与您正在修改的XAML位于同一个程序集中,请在导入命名空间时省略clr-namespace的程序集段。
<强> DO 强>
xmlns:local="clr-namespace:NamespaceContainingSignClass"
不要
xmlns:local="clr-namespace:NamespaceContainingSignClass;assembly=AssemblyContainingSignClassAndXAML"
答案 1 :(得分:13)
对于那些在我的船上没有得到谷歌这个错误的前1,00个结果帮助的人....在我的情况下,它与冶炼的建议完全相反:我不得不添加装配信息在我的xmlns声明的末尾。可能是因为我的特殊情况,我猜 - 我的datatemplate是在一个独立的resourcedictionary xaml文件中。不确定。我只是知道它没有工作直到我添加了汇编信息,所以对于那些挣扎的人来说,给那个打击,看看它是否有效。我不倾向于深入研究为什么,它只是这样做。
答案 2 :(得分:7)
Sign
别名的local
类的名称空间:xmlns:local="clr-namespace:NamespaceContainingSignClass"
Sign
是否已标记为public
Sign
是否具有无参数构造函数答案 3 :(得分:2)
答案 4 :(得分:0)
我刚刚发现了另一个问题,可能会导致此问题。 允许在项目名称中使用点,例如
FancyTrainsimTools.Desktop
是有效的项目名称。如果您在项目中使用文件夹,则可能会获得以下结构:
FancyTrainsimTools.Desktop.Logic
如果定义引用此文件夹中项目的数据模板,则会导致错误消息。我还使用了分层数据模板,但这给出了稍微不同的消息。
解决方法:
通过删除点来重命名您的项目:
FancyTrainsimToolsDesktop
编辑:为了报告错误,我尝试重现此问题,但现在一切正常....至今尚未解决之谜,也不清楚如何在周围创建工作.... < / p>
答案 5 :(得分:0)
现在遇到了这个错误。问题是我从我的程序集中引用的类位于具有更高框架级别(4.7.2 对 4.6)的程序集中。版本对齐解决了问题。