c # триггер данных для разных значений - PullRequest
0 голосов
/ 31 января 2019

Я устанавливаю флажок для настраиваемого визуального стиля.

Я ищу способ избежать повторения одного и того же установщика для другого значения в триггере данных.

Как вы можете видеть разныевсе источники данных для разных значений имеют один и тот же установщик.

Есть идеи о том, как его взаимно объединить?

Я не могу найти никакой подсказки в SO или в Интернете, триггер мультиданных не работает с 'ИЛИ.

Вот мой код:

<Ellipse StrokeThickness="0"
     Grid.Column="0"
     Width="24"
     Height="24"
     Stroke="{TemplateBinding Background}">
<Ellipse.Style>
    <Style TargetType="{x:Type Ellipse}">
        <Style.Triggers>
            <DataTrigger Binding="{Binding IsChecked, RelativeSource={RelativeSource TemplatedParent}}"
                         Value="{x:Null}">
                <Setter Property="Fill">
                    <Setter.Value>
                        <MultiBinding Converter="{StaticResource ColorToBrush}">
                            <Binding Path="Background"
                                     RelativeSource="{RelativeSource TemplatedParent}" />
                            <Binding Path="IsChecked"
                                     RelativeSource="{RelativeSource TemplatedParent}" />
                            <Binding Path="IsMouseOver"              
                                     RelativeSource="{RelativeSource TemplatedParent}" />
                            <Binding Path="IsEnabled"                
                                     RelativeSource="{RelativeSource TemplatedParent}" />
                        </MultiBinding>
                    </Setter.Value>
                </Setter>
            </DataTrigger>
            <DataTrigger Binding="{Binding IsChecked, RelativeSource={RelativeSource TemplatedParent}}"
                         Value="True">
                <Setter Property="Fill">
                    <Setter.Value>
                        <MultiBinding Converter="{StaticResource ColorToBrush}">
                            <Binding Path="Background"
                                     RelativeSource="{RelativeSource TemplatedParent}" />
                            <Binding Path="IsChecked"
                                     RelativeSource="{RelativeSource TemplatedParent}" />
                            <Binding Path="IsMouseOver"
                                     RelativeSource="{RelativeSource TemplatedParent}" />
                            <Binding Path="IsEnabled"
                                     RelativeSource="{RelativeSource TemplatedParent}" />
                        </MultiBinding>
                    </Setter.Value>
                </Setter>
            </DataTrigger>
            <DataTrigger Binding="{Binding IsChecked, RelativeSource={RelativeSource TemplatedParent}}"
                         Value="False">
                <Setter Property="Fill">
                    <Setter.Value>
                        <MultiBinding Converter="{StaticResource ColorToBrush}">
                            <Binding Path="Background"
                                     RelativeSource="{RelativeSource TemplatedParent}" />
                            <Binding Path="IsChecked"
                                     RelativeSource="{RelativeSource TemplatedParent}" />
                            <Binding Path="IsMouseOver"              
                                     RelativeSource="{RelativeSource TemplatedParent}" />
                            <Binding Path="IsEnabled"                
                                     RelativeSource="{RelativeSource TemplatedParent}" />
                        </MultiBinding>
                    </Setter.Value>
                </Setter>
            </DataTrigger>
        </Style.Triggers>
    </Style>
</Ellipse.Style>

Спасибо =)

...