Подскажите как решить следующую проблему. Есть 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... и добавьте шаблон элемента к себе в проект.
В шаблоне вы увидите такую структуру:
<Grid x:Name="templateRoot" ...>
<TabPanel x:Name="headerPanel" ... />
<Border x:Name="contentPanel" ...>
<ContentPresenter x:Name="PART_SelectedContentHost" ... />
</Border>
</Grid>
Как видно, заголовки TabItem
'ов и их контент лежат рядом и не вложены друг в друга, это объясняет почему свойства TabItem
не наследуются его контентом. Это можно исправить прямо в шаблоне, добавьте такую привязку:
<Border x:Name="contentPanel" ...
IsEnabled="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=TabControl}, Path=SelectedItem.IsEnabled}">
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Написал скрипт на шарпе, прикрепил его к обьекту игрока, по задумке изображение должно перемещаться по нажатию на стрелку вправо, но ничего...
Каким образом в c# можно сделать async получив значение во внешний метод из лямбды?