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

时间:2014-05-14 07:49:47

标签: c# wpf visual-studio-2008-sp1

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

        }
    }
}

2 个答案:

答案 0 :(得分:1)

啊......现在你已经添加了你的课程定义(当你问你的问题时,请总是显示你的相关代码),我认为我可以看到你的问题。我有类似的情况Serialization是问题所在。由于某些未知原因,它与INotifyPropertyChanged接口不兼容。

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

答案 1 :(得分:0)

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