Điều này khác với WPF để Silverlight. Trong WPF, câu trả lời từ Rob là chính xác.
Trong Silverlight, tính năng này sẽ không hoạt động. Silverlight sử dụng VisualStateManager thay vì trình kích hoạt. Mã cho điều này phức tạp hơn, nhưng một số người cảm thấy rằng điều này là tốt hơn. Bạn cần phải tạo mẫu kiểm soát theo phong cách của mình. (Để biết thông tin về cách xác định mẫu điều khiển, hãy xem This Article. Cách dễ nhất để tạo một ControlTemplate tương tự là sử dụng Expression Blend, có chức năng trích xuất mẫu hiện có đầy đủ cho bạn.)
Trong mẫu kiểm soát, xác định VisualState bạn quan tâm và những gì bạn muốn xảy ra.
<VisualStateGroup x:Name="CommonStateGroup">
<VisualState x:Name="MouseOverState">
<Storyboard>
<ColorAnimation Storyboard.TargetName="TopmostElementOfTheTemplate"
Storyboard.TargetProperty="Foreground"
To="Black"
Duration="00:00:00" >
</ColorAnimation>
</Storyboard>
</VisualState>
</VisualStateGroup>
...
Điều quan trọng là phải xác định màu nền trước mặc định theo kiểu, như Rob đã làm ở trên. Nếu bạn chỉ định nó trên điều khiển thay vào đó nó sẽ ghi đè các giá trị từ kiểu.
Lưu ý rằng có thể lấy VisualStateManager ra khỏi Bộ công cụ WPF để có một giải pháp tương tự trong WPF.
Nguồn
2010-03-08 14:34:35
Cuộc gọi tốt Ben. +1! –
Điều này đã lừa ... cảm ơn bạn! – mattruma