Я пытаюсь добавить взаимодействие проверки к этому стилю, но он не может найти свойство.Что здесь не так? - PullRequest
0 голосов
/ 23 апреля 2019

Я добавил стили в свой комбинированный список из элемента управления 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>

Это не последнее взаимодействие, которое я хотел реализовать, но я ожидал, что фон комбо-поля и кисть границы станут зелеными при наведении на них курсора во время ошибки валидации.

Вместо этого он говорит, что не может даже найти свойство на моем контроле.

1 Ответ

0 голосов
/ 25 апреля 2019

Как отметил Эд Планкетт, все, что мне нужно было сделать, - это изменить

<Condition Binding="{Binding Validation.HasError, RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="false" />

до

<Condition Binding="{Binding (Validation.HasError), RelativeSource={RelativeSource AncestorType={x:Type ComboBox}}}" Value="false" />

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