2012-09-25 9 views
5

ToggleButtonControlTemplateに関する問題が発生しました。MouseOver状態がトリガされた後に、ColorAnimation for Checked状態が持続的な色にならないのはなぜですか?

ボタンがCheckedの場合、ColorAnimationがトリガーされ、コントロールの背景色が変わります。しかし、ユーザがMouseOver状態を入力すると、ボタンの背景にも影響する別のアニメーションがトリガされます。

マウスがもはやMouseOver状態にないとき、コントロールはChecked状態にあるはずの色に戻りません。 MouseOverの状態がトリガーされたときになぜこれが持続しないのか分かりません。 Borderを同封Gridを作成関わる私が持っていた問題の

<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

私は、異なるグループに属する視覚状態で同じターゲットプロパティをアニメーション化することは良い考えではないと思います。ソリューションの1つは、異なるグループのビジュアル状態を異なるプロパティ/要素のセットで操作することです。 –

+0

問題の原因と同じプロパティをアニメートするので、私は考えていました。 –

答えて

2

私の回避策:私のControlTemplate

VisualStateManager部分は、みかんのようになります。

の場合はアニメーションをBorder.Backgroundに変更し、CheckedStatesの場合はGrid.Backgroundにアニメーションを変更しました。

これは私が探していた視覚効果を実現します。

関連する問題