2012-09-25 33 views
5

Tôi gặp sự cố với số ControlTemplate cho ToggleButton tôi đã tạo.Tại sao ColorAnimation cho trạng thái được kiểm tra không bền màu sau khi trạng thái MouseOver được kích hoạt?

Khi nút là Checked, một ColorAnimation được kích hoạt và nền của điều khiển thay đổi màu. Tuy nhiên, nếu người dùng vào trạng thái MouseOver, một hoạt ảnh khác được kích hoạt cũng ảnh hưởng đến nền của nút.

Khi chuột không còn ở trạng thái MouseOver, điều khiển không quay trở lại màu khi nó ở trạng thái Checked. Tôi không chắc tại sao điều này không tồn tại khi trạng thái MouseOver được kích hoạt.

Phần VisualStateManager của ControlTemplate tôi trông sorta như thế này:

<VisualStateManger.VisualStateGroups> 
    <VisualStateGroup x:Name="CommonStates"> 
     <VisualState x:Name="Normal"></VisualState> 
     <VisualState x:Name="MouseOver"> 
      <Storyboard> 
       <ColorAnimation Storyboard.TargetName="BackgroundBorder" 
        Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)" 
        To="Gold" Duration="0:0:0.3" /> 
      </Storyboard> 
     </VisualState> 
    </VisualStateGroup> 
    <VisualStateGroup x:Name="CheckedStates"> 
     <VisualState x:Name="Checked"> 
      <Storyboard> 
       <ColorAnimation Storyboard.TargetName="BackgroundBorder" 
        Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)" 
        To="PaleGoldenrod" Duration="0:0:0.3" /> 
      </Storyboard> 
     </VisualState> 
    </VisualStateGroup> 
</VisualStateManager.VisualStateGroups> 
+1

Tôi nghĩ rằng không phải là một ý tưởng hay để làm động các thuộc tính mục tiêu giống nhau trong các trạng thái trực quan thuộc về các nhóm khác nhau. Một trong những giải pháp sẽ là có trạng thái trực quan trong nhóm khác nhau hoạt động trên các tập hợp các thuộc tính/yếu tố khác nhau. –

+0

Tôi đã suy nghĩ bởi vì tôi đang hoạt hình cùng một tài sản đó là nguồn gốc của vấn đề. –

Trả lời

2

workaround của tôi cho vấn đề tôi đã có liên quan đến việc tạo ra một Grid rằng kèm theo các Border.

Đối với CommonStates Tôi đã thực hiện thay đổi hoạt ảnh cho Border.Background và đối với CheckedStates Tôi đã thực hiện thay đổi hoạt ảnh cho Grid.Background.

Nó đạt được hiệu ứng hình ảnh mà tôi đang tìm kiếm.

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