Не удается найти тип подкласса в свойстве 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
и посмотрите, если это имеет какое-либо значение.