在DataType属性中找不到子类的类型

本文关键字:子类 类型 找不到 DataType 属性 | 更新日期: 2023-09-27 18:03:20

在我的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
        {
        }
    }
}

在DataType属性中找不到子类的类型

啊…现在你已经添加了你的类定义(请总是显示你的相关代码你问你的问题),我想我可以看到你的问题。我有一个类似的情况,Serialization是问题。由于某些未知的原因,它不能很好地与INotifyPropertyChanged接口一起工作。

为了解决这个问题,我的WPF项目都有单独的SerializableXXX类,用于任何需要序列化的对象,而在UI中使用的类和实现INotifyPropertyChanged接口没有序列化。作为一个简单的测试,尝试删除SerializableAttribute,看看它是否有任何不同。

SectionNode子类移出SectionContainer可以解决这个问题。在此之前,我还尝试在单独的<HierarchicalDataTemplate.DataType/>标记中定义DataType值,但它导致了另一个错误消息。因此,其他的想法如何使用子类,同时没有错误是受欢迎的。