Что я хочу сделать, установлен BorderBrush редактируемого ComboBox. Я использую слегка измененные шаблоны WPF по умолчанию. Они структурированы, как показано ниже:Установите цвет рамки редактируемого ComboBox на фокус
<ControlTemplate x:Key="ComboBoxEditableTemplate" TargetType="{x:Type ComboBox}">
...
<Grid x:Name="templateRoot" ...>
...
<ToggleButton x:Name="toggleButton" ... />
<Border x:Name="border" ...>
<TextBox x:Name="PART_EditableTextBox" ... />
<!-- textbox with IsFocused property which should be focus trigger -->
</Border>
</Grid>
...
</ControlTemplate>
ToggleButton шаблон:
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Border x:Name="templateRoot" ...> <!-- first border brush I want to set on focus -->
<Border x:Name="innerBorder" ...> <!-- second border brush I want to set on focus -->
<Border x:Name="splitBorder" ...>
<Path x:Name="arrow" ... />
</Border>
</Border>
</Border>
</ControlTemplate>
И теперь, что должно произойти.
Когда PART_EditableTextBox.IsFocused
равно true
затем установить templateRoot.BorderBrush
и innerBorder.BorderBrush
на другой цвет (например, [удален: красный] красный и синий).
Это было бы очень просто, если бы было установлено только одно BorderBrush
, так как я мог бы использовать TemplateBinding
, чтобы связать это свойство с номером ToggleButton
.
Для меня проблема заключается в вложенных шаблонах. Я не знаю, как обращаться к другому шаблону.
Почти, но мне нужно установить разные цвета для 'innerBorder' и' templateRoot' – stil
@stil Я обновил свой ответ –