我正在尝试将触发器添加到控件模板(对于按钮),并且我收到一条错误消息,指出无法找到目标。这是一段代码片段
<ControlTemplate TargetType="Button">
<Border x:Name="t"
Margin="{TemplateBinding Margin}"
BorderBrush="{TemplateBinding BorderBrush}"
BorderThickness="{TemplateBinding BorderThickness}">
<Border.Background>
<LinearGradientBrush StartPoint="0,0"
EndPoint="0,1">
<LinearGradientBrush.GradientStops>
<GradientStop x:Name="BackgroundGradientStop1"
Offset="0"
Color="{StaticResource BackgroundColor1}" />
<GradientStop x:Name="BackgroundGradientStop2"
Offset="1"
Color="{StaticResource BackgroundColor2}" />
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
</Border.Background>
<ContentPresenter Margin="{TemplateBinding Padding}" />
</Border>
<ControlTemplate.Triggers>
<Trigger Property="IsEnabled"
Value="False">
<Setter TargetName="BackgroundGradientStop1"
Property="Color"
Value="White" />
</Trigger>
触发器的Setter中的名称“BackgroundGradientStop1”被报告为未找到,但是在上面的代码中之前已经定义了它。在此之后,MultiTriggers中使用相同的目标名称,并且不会报告任何错误。
我的代码出了什么问题? SID
答案 0 :(得分:0)
我非常肯定(仅因为我找不到MSDN支持文档)这是因为GradientStop
不是FrameworkElement
。你应该只能在Setters中定位FrameworkElement
。您要完成的解决方案可能是将多个LinearGradientBrush
定义为资源,并使用触发器将ControlTemplate
触发器中Border元素的Background属性设置为其中一个资源。