Применить DataTemplate к типу, производному от FrameworkElement

У меня есть список пользовательских "страниц" в моем приложении. Каждая страница представляет свой вид интерфейса. У них есть несколько простых свойств, таких как заголовок строки и значок, но у них также есть ряд сложных свойств, состоящих из элементов управления для вставки в основную панель инструментов, основной области содержимого, пользовательских панелей строки состояния и т. Д. Тип страницы происходит от FrameworkElement так что привязка данных работает должным образом внутри XAML каждой страницы. Пока все, что я описал, прекрасно работает.

Проблема возникает, когда я пытаюсь быстро выкинуть список всех страниц. У меня есть ItemsControl который я привязал к списку активных страниц и DataTemplate назначен на ItemTemplate состоящий только из метки, привязанной к странице Title свойство (как уже отмечалось, это просто обычная строка). Однако, когда я запускаю его, в списке ничего не отображается, и я получаю это в выводе ошибки:

Ошибка System.Windows.Data: 25: ItemTemplate и ItemTemplateSelector недопустимы для элемента.; Тип ='WelcomePage'

Если я изменю базовый тип на что угодно, кроме FrameworkElement шаблон работает, но привязка данных на каждой странице ужасно нарушается (привязка к элементам осуществляется через ElementName не удается, несмотря на то, что оба вовлеченных элемента управления являются детьми общего FrameworkElement, который определен в XAML страницы).

Кто-нибудь знает способ заставить DataTemplate применять к производному от FrameworkElement типу или заставить привязку данных работать в файле XAML с корнем не-FrameworkElement?

1 ответ

Не то чтобы это, вероятно, принесло вам пользу сейчас, но у меня была такая же проблема при похожих обстоятельствах. Я просто заменил элементы управления для listview, Как с помощью listbox вызвал у меня дополнительные ошибки связывания.

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