Вы используете пользовательский Template
, но ваш шаблон не применяет свойства границ шаблонного TextBox
. Попробуйте добавить следующее к элементу Border
в шаблоне:
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}"
На самом деле есть несколько способов подойти к этому: использовать привязки шаблонов и поставить триггер в Style
; используйте привязки к шаблону и вставьте триггер в шаблон; используйте явный целевой элемент и поместите триггер в шаблон (как предлагали другие); и т. д. «Правильный» подход зависит от того, как / если вы хотите, чтобы элемент управления реагировал на изменение свойства. Например: если кто-то устанавливает новый BorderBrush
непосредственно на TextBox
, хотите ли вы, чтобы он заменил ваш эффект оранжевого наведения или нет? Стоит прочитать значение приоритета свойств зависимостей, чтобы понять последствия того, как и где установлены определенные свойства.
Стоит отметить, что ваш шаблон неполон и не будет работать, если вы хотите, чтобы текст был редактируемым (или выбираемым). TextBox
ожидает, что его шаблон будет иметь специальное имя ScrollViewer
, в которое может быть введено редактируемое текстовое представление. Попробуйте заменить ContentPresenter
на следующее:
<ScrollViewer x:Name="PART_ContentHost"
Padding="{TemplateBinding Padding}" />
Обратите внимание, что атрибут x:Name
должен точно совпадать.