在我的xaml文件中,wpf项目中的窗口以这种方式使用绑定到类型
<TreeView>
<TreeView.Resources>
<HierarchicalDataTemplate DataType="{x:Type spec:SectionContainer.SectionNode}">
...
其中SectionContainer.SectionNode
是部分类SectionContainer
的子类,spec
是当前程序集的命名空间,在Window
标记中定义为:
xmlns:spec="clr-namespace:Proj.Sections".
定义spec
时没有错误,但在DataType属性中使用SectionNode类型会生成:
Cannot find the type 'spec:SectionContainer.SectionNode'. Note that type names are case sensitive.
我理解这个错误意味着什么,但它没有理由出现在那里。使用部分类或其他东西可能有问题吗?所有类都定义为public
。
我的课程:
namespace Proj.Sections
{
[Serializable]
public partial class SectionContainer : INotifyPropertyChanged
{
[Serializable]
public class SectionNode : SectionNode
{
}
}
}
答案 0 :(得分:1)
啊......现在你已经添加了你的课程定义(当你问你的问题时,请总是显示你的相关代码),我认为我可以看到你的问题。我有类似的情况Serialization
是问题所在。由于某些未知原因,它与INotifyPropertyChanged
接口不兼容。
为了解决这个问题,我的WPF项目对于需要序列化的任何对象都有单独的SerializableXXX
类,并且在UI中使用并实现INotifyPropertyChanged
接口的类没有序列化。作为一项简单的测试,请尝试删除SerializableAttribute
,然后查看它是否有任何区别。
答案 1 :(得分:0)
将SectionNode
子类移出SectionContainer
解决了这个问题。在此之前,我还尝试在单独的DataType
标记中定义<HierarchicalDataTemplate.DataType/>
值,但它导致了另一个错误消息。因此欢迎其他想法如何使用子类并且在同一时间没有错误。