5

ControlTemplate我创建的for遇到了问题ToggleButton

当按钮为Checked时,ColorAnimation触发 a 并且控件的背景改变颜色。但是,如果用户进入该MouseOver状态,则会触发另一个动画,该动画也会影响按钮的背景。

当鼠标不再处于该MouseOver状态时,控件不会返回到它处于该状态时应具有的颜色Checked。我不确定为什么在MouseOver触发状态时这种情况不会持续存在。

我的VisualStateManager部分ControlTemplate看起来是这样的:

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

1 回答 1

3

我针对我所涉及的问题的解决方法是创建一个Grid包含Border.

对于CommonStates我对 进行了动画更改,Border.Background对于CheckedStates我对Grid.Background.

它达到了我想要的视觉效果。

于 2012-09-26T17:53:57.993 回答