Страницы

Поиск по вопросам

пятница, 7 июня 2019 г.

Наследование свойства IsEnabled в TabControl

Подскажите как решить следующую проблему. Есть TabControl с несколькими TabItem. Каждый TabItem в начальный момент недоступен (IsEnabled = false), рядом с TabControl присутствуют CheckBox-ы, после нажатия на которые активируется соответствующие TabItem. Как активировать и деактивировать это понятно - присваиваю каждому TabItem уникальное имя и у CheckBox прописываю реакцию на check/uncheck. Начал заполнять TabItem-ы элементами типа TextBox и др. - после компиляции выяснилось, что несмотря на то что они помещались в Grid принадлежащий неактивному TabItem, но сами по неизвестной причине активны и не унаследовали IsEnabled=false. Как можно просто решить эту проблему? В принципе понятное дело, каждому элементу можно прописать имя и в check/uncheck включать/выключать, но может есть способ заставить унаследовать IsEnabled TabItem-а?


Ответ

В дизайнере студии щелкните правой кнопкой мыши по TabControl и выберите Edit Template>Edit a Copy... и добавьте шаблон элемента к себе в проект.
В шаблоне вы увидите такую структуру:

Как видно, заголовки TabItem'ов и их контент лежат рядом и не вложены друг в друга, это объясняет почему свойства TabItem не наследуются его контентом. Это можно исправить прямо в шаблоне, добавьте такую привязку:

Комментариев нет:

Отправить комментарий