XAML中的DataTrigger / Style快速

时间:2009-12-02 11:30:00

标签: wpf data-binding xaml datatrigger

我有一个如此定义的椭圆

<Ellipse Stroke="#FF474747" Style="{StaticResource SelectedTemplate}" Fill="{StaticResource RedGradient}" />

我也有两种样式设置如此

<RadialGradientBrush x:Key="RedGradient" GradientOrigin="1,1">
    <GradientStop Color="White"/>
    <GradientStop Color="Red" Offset="1"/>
</RadialGradientBrush>

<RadialGradientBrush x:Key="GreenGradient" GradientOrigin="1,1">
    <GradientStop Color="White"/>
    <GradientStop Color="Green" Offset="1"/>
</RadialGradientBrush>

现在,当第一次绘制Ellipse时,它根据RedGradientBrush为红色。我想在绑定值(Selected)为true时将椭圆设为绿色,所以我添加了一个Style来执行此操作

<Style x:Key="SelectedTemplate" TargetType="Ellipse">
    <Style.Triggers>
        <DataTrigger Value="True" Binding="{Binding Selected}">
            <Setter Property="Stroke" Value="White" />
            <Setter Property="StrokeThickness" Value="5" />
            <Setter Property="Fill" Value="{StaticResource GreenGradient}" />
        </DataTrigger>
    </Style.Triggers>
</Style>

现在,当Selected为True时,StrokeThickness只会改变,没有别的?有人可以帮忙吗?

由于

1 个答案:

答案 0 :(得分:2)

显然,XAML内联样式会覆盖您设置的任何内容。这就是为什么只有StrokeThickness被更改,因为它没有设置为内联。