2016-10-24 6 views
0

コントロールテンプレート(ボタン用)にトリガを追加しようとしていますが、ターゲットが見つからないというエラーが表示されます。ここでは、コードスニペットはwpf trigger setter issue

<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」は見つからなかったと報告され、しかしそれだけで上記のコードでは、その前に定義されます。同じターゲット名がこの後にMultiTriggersで使用され、エラーは報告されません。

私のコードで何が問題になっていますか? Sid

答えて

0

これはGradientStopFrameworkElementではないためです(私はMSDNバッキングドキュメントが見つからないためです)。セッターではFrameworkElementをターゲットにすることができます。あなたが達成しようとしているものの解決策はおそらく複数のLinearGradientBrushをリソースとして定義し、トリガーを使用してControlTemplateトリガー内のBorder要素のBackgroundプロパティをそれらのリソースの1つに設定します。

+0

多くのおかげで、私はそれを試してみましょう、 – Sid