WPF触发设置器问题



我正试图将触发器添加到控制模板(用于按钮),并且我得到一个错误,说找不到目标。下面是一个代码片段

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

名称"BackgroundGradientStop1"在触发器的Setter中被报告为未找到,但是它在上面的代码中被定义。在MultiTriggers中使用相同的目标名称,并且没有错误报告。

我的代码有什么问题?Sid

我相当确定(只是因为我找不到MSDN支持文档)这是因为GradientStop不是FrameworkElement。你应该只能在设置中瞄准FrameworkElement。您想要完成的解决方案可能是将多个LinearGradientBrush定义为资源,并使用触发器将ControlTemplate触发器中的Border元素的Background属性设置为这些资源之一。

最新更新