Я добавил стили в свой комбинированный список из элемента управления ToggleBox, и все это отлично работает.
Но теперь я хочу добавить дополнительное взаимодействие, когда Validation.HasError
истинно.
По какой-то причине он сообщает мне, что свойство 'Validation' не найдено в 'object' '' ExtendedComboBoxControl '', которое является моим пользовательским элементом управления, наследуемым от ComboBox.
Я пытался просто использовать триггеры в стилизации для выпадающего списка, но по какой-то причине я могу изменить толщину границы, но не кисть фона или границы.
<Style x:Key="ComboBoxToggleButtonStyle" TargetType="{x:Type ToggleButton}">
<Setter Property="OverridesDefaultStyle" Value="true" />
<Setter Property="IsTabStop" Value="false" />
<Setter Property="Focusable" Value="false" />
<Setter Property="ClickMode" Value="Press" />
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type ToggleButton}">
<Border x:Name="templateRoot"
Background="{StaticResource ComboBox.Static.Background}"
BorderBrush="{StaticResource ComboBox.Static.Border}"
BorderThickness="{TemplateBinding BorderThickness}"
SnapsToDevicePixels="true">
<Border x:Name="splitBorder"
Width="{DynamicResource {x:Static SystemParameters.VerticalScrollBarWidthKey}}"
Margin="1"
Padding="0"
HorizontalAlignment="Right"
BorderBrush="Transparent"
BorderThickness="2,0,0,0"
SnapsToDevicePixels="true">
<Path x:Name="arrow"
Margin="0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Data="F1 M 0,0 L 5,5 L 10,0 L 0,0"
Fill="{StaticResource Grey500Brush}" />
</Border>
</Border>
<ControlTemplate.Triggers>
<MultiDataTrigger>
<MultiDataTrigger.Conditions>
<Condition Binding="{Binding IsMouseOver, RelativeSource={RelativeSource Self}}" Value="true" />
<Condition Binding="{Binding IsEditable, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="false" />
<Condition Binding="{Binding Validation.HasError, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="false" />
</MultiDataTrigger.Conditions>
<Setter TargetName="templateRoot" Property="Background" Value="{StaticResource ComboBox.MouseOver.Background}" />
<Setter TargetName="templateRoot" Property="BorderBrush" Value="{StaticResource ComboBox.MouseOver.Border}" />
<Setter TargetName="templateRoot" Property="BorderThickness" Value="{StaticResource Border.Thickness.Thick}" />
<Setter TargetName="splitBorder" Property="Margin" Value="0" />
</MultiDataTrigger>
</ControlTemplate.Triggers>
</Setter.Value>
</Setter>
Это не последнее взаимодействие, которое я хотел реализовать, но я ожидал, что фон комбо-поля и кисть границы станут зелеными при наведении на них курсора во время ошибки валидации.
Вместо этого он говорит, что не может даже найти свойство на моем контроле.