Не удается найти тип подкласса в свойстве DataType

В моем файле xaml для окна в проекте wpf я использую привязку к типу таким образом

<TreeView>
   <TreeView.Resources>
       <HierarchicalDataTemplate DataType="{x:Type spec:SectionContainer.SectionNode}">
...

где SectionContainer.SectionNode является подклассом частичного класса SectionContainer а также spec пространство имен текущей сборки, определенное в Window пометить как:

xmlns:spec="clr-namespace:Proj.Sections".

При определении нет ошибки spec, но использование типа SectionNode в свойстве DataType создает:

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 ответа

Решение

Перемещение SectionNode подкласс из SectionContainer решает проблему. До этого я тоже пытался определить DataType значение в отдельности <HierarchicalDataTemplate.DataType/> тег, но это привело к другим сообщениям об ошибках. Поэтому приветствуются другие идеи, как использовать подклассы и не иметь ошибок одновременно.

Ааа... теперь, когда вы добавили определения своих классов (всегда указывайте свой соответствующий код, когда задаете свой вопрос), я думаю, что вижу вашу проблему. У меня была похожая ситуация, когда Serialization была проблема. По какой-то неизвестной причине, это не очень хорошо работает с INotifyPropertyChanged интерфейс.

Чтобы обойти эту проблему, все мои проекты WPF имеют отдельные SerializableXXX классы для любых объектов, которые нуждаются в сериализации, и классы, которые используются в пользовательском интерфейсе и реализуют INotifyPropertyChanged Интерфейс не имеет сериализации. В качестве простого теста попробуйте удалить SerializableAttributeи посмотрите, если это имеет какое-либо значение.

Другие вопросы по тегам