C#数据触发器的不同值

时间:2019-01-31 09:40:15

标签: c# wpf binding datatrigger

我正在为自定义视觉样式创建一个模板。

我正在寻找一种避免在数据触发器上为不同的值重复相同的设置器的方法。

您会看到不同值的不同数据触发器都具有相同的设置器。

关于如何相互交流的任何想法?

我在SO或Web上找不到任何线索,多数据触发器不适用于'OR'语句。

这是我的代码:

<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>

谢谢=)

0 个答案:

没有答案