2009-11-17 14 views
21

Bir ButtonControlTemplate var ve bir bir Trigger kullanarak bir DropShadowEffect değiştirmeye çalışıyorum. İşte benim Xaml:ControlTemplate'de bir Tetikleyici aracılığıyla DropShadowEffect özelliğini nasıl ayarlayabilirim?

<Button.Template> 
    <ControlTemplate TargetType="Button"> 
    <Border x:Name="ButtonBorder" Margin="10" CornerRadius="5" Background="Gray"> 
     <Border.Effect> 
     <DropShadowEffect ShadowDepth="5" x:Name="BorderEffect" /> 
     </Border.Effect> 
     <ContentPresenter HorizontalAlignment="Center" /> 
    </Border> 
    <ControlTemplate.Triggers> 
     <Trigger Property="Button.IsMouseOver" Value="True"> 
     <Setter Property="Background" TargetName="ButtonBorder" Value="LightGray" /> 
     </Trigger> 
     <Trigger Property="Button.IsPressed" Value="True"> 
     <Setter Property="Margin" TargetName="ButtonBorder" Value="13,13,7,7" /> 
     <!-- this is where I get the error --> 
     <Setter Property="ShadowDepth" TargetName="BorderEffect" Value="2" /> 
     </Trigger> 
    </ControlTemplate.Triggers> 
    </ControlTemplate> 
</Button.Template> 

BorderEffect'in bulunamadığını belirten bir hata alıyorum.

<Setter Property="Effect.ShadowDepth" TargetName="ButtonBorder" Value="2" /> 

Ama aynı zamanda

(yerine DropShadowEffect taban sınıfını kullanıyor çünkü) mülkiyet ShadowDepth tip Effect nesnesi bulunabilir olamayacağını bildiren bir hata alıyorum:
Ben de denedim

Bunu nasıl çözebilirim?

cevap

25

Sen setter.value

<Setter Property="Margin" TargetName="ButtonBorder" Value="13,13,7,7" /> 
    <Setter Property="Effect" TargetName="ButtonBorder" > 
     <Setter.Value> 
     <DropShadowEffect ShadowDepth="2" /> 
     </Setter.Value> 
    </Setter> 
    </Trigger> 
+0

Yep bir bütün olarak Etkisi ayarlayabilirsiniz, ben kullanarak sona erdi buydu, ama sadece ihtiyacım özelliğini değiştirmek için bir yolu olduğunu ben ... Teşekkürler :-) –

İlgili konular