WPF Tab View, пользовательские шаблоны и специальные возможности - PullRequest
0 голосов
/ 22 ноября 2008

У меня проблема с элементом управления Tab Tab, из-за которого я надеялся, что кто-то здесь сможет мне помочь.

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

Для этого я изменил шаблон элемента управления по умолчанию для вкладки, используя команду «Редактировать копию» в Expression Blend. Затем я просто устанавливаю угловой радиус для «границы» заголовка вкладки.

Однако проблема этого подхода заключается в том, что команда «Редактировать копию» в конечном итоге генерирует буквенные значения цвета для градиентных кистей, используемых для отображения фона вкладок «Активный» и «Мышь над».

Это вызывает проблемы, когда включен режим «высокого контраста». Вместо того, чтобы переключаться на цветовую схему с высокой контрастностью, как и другие элементы управления, на вкладке с измененным шаблоном будут использоваться буквенные значения цвета, указанные в градиентных кистях для вкладок активной и наведения мыши. Это приводит к тому, что эти вкладки становятся нечитаемыми, потому что текст в заголовке вкладки меняется на «белый», когда ОС переключается в режим высокой контрастности (белый текст на сером фоне не читается).

Я подумал, что смогу переключиться обратно на квадратные вкладки, когда включен режим высокой контрастности. Это решит эту конкретную проблему. Тем не менее, я думаю, что будут аналогичные проблемы с пользователями, у которых установлены пользовательские темы Windows.

Итак, что мне интересно, так это:

  1. Можно ли каким-либо образом изменить градиенты, чтобы они указывали на системные ресурсы, а не на буквальные значения, чтобы цвета корректно обновлялись при включенном режиме высокой контрастности
  2. Или есть ли способ установить радиус угла на границе заголовка вкладки без создания нового шаблона элемента управления?

Edit:

Я думаю, что я должен быть немного более ясным о том, что я ищу. Я хочу элемент управления вкладки, который ведет себя так же, как элемент управления вкладки по умолчанию, за исключением того, что углы заголовка вкладки закруглены. По умолчанию элемент управления вкладками будет использовать градиенты для фона вкладок и будет «подсвечивать» неактивные вкладки, когда пользователь наводит на них курсор мыши. Он также будет корректно реагировать и менять свои цвета, а также поведение мыши при переключении ОС в режим высокой контрастности. Мне все еще нужно это поведение.

При создании копии шаблона элемента управления по умолчанию в Blend создается шаблон элемента управления, который некорректно работает в режиме высокой контрастности. Я хочу знать, что мне нужно сделать с шаблоном элемента управления или кодом в моем окне, чтобы этот сгенерированный шаблон элемента управления работал правильно в режиме высокой контрастности.

Ответы [ 2 ]

1 голос
/ 25 ноября 2008

Невозможно сделать закругленные углы табуляции без создания собственного шаблона для TabItem. Делая «Редактировать копию» в blend, я считаю, создает шаблон по умолчанию на основе текущей темы окон, которые у вас есть (однако я могу ошибаться. Я полагаю, что если вы сделаете дамп контрольной таблицы, он получит текущий шаблон элемента управления, который определяется системой тема. как в презентации. аэро или что-то в этом роде). Однако, если вы хотите указать цвета, которые система будет использовать при внесении изменений, разделите их следующим образом в шаблоне:

Color="{DynamicResource {x:Static SystemColors.XXXX}"

Это будет использовать системные цвета для стилизации элемента управления и будет обновляться для отражения изменений в системной теме.

0 голосов
/ 22 ноября 2008

Добавьте элемент управления простым стилем к вашему окну в Blend. Это добавит SimpleStyles.xaml, включая один для элемента управления вкладкой.

Посмотрите на Family.Show и как они делают черные и серебряные темы.

Между этими двумя примерами у вас должен быть хороший пример настройки элемента управления вкладками и обработки различных тем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...