2009-11-17 27 views
21

Tôi có một số ButtonControlTemplate và tôi đang cố sửa đổi DropShadowEffect trên Border bằng cách sử dụng Trigger. Đây là Xaml của tôi:Làm cách nào để đặt thuộc tính của DropShadowEffect qua Trình kích hoạt trong ControlTemplate?

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

Tôi gặp lỗi khi nói rằng không thể tìm thấy BorderEffect.
Tôi cũng đã cố gắng:

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

Nhưng tôi cũng nhận được một lỗi nói với tôi rằng tài sản ShadowDepth không thể được tìm thấy trên các đối tượng của loại Effect (vì nó sử dụng các lớp cơ sở thay vì DropShadowEffect)

Tôi làm cách nào để giải quyết vấn đề này?

Trả lời

25

Bạn có thể thiết lập các hiệu ứng như một toàn thể trong 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, đó là những gì tôi đã kết thúc sử dụng, nhưng tôi đó là Có cách nào để chỉ cần sửa đổi các tài sản tôi cần ... Cảm ơn :-) –

Các vấn đề liên quan