2

我试图让 ColorAnimation 根据控件的状态发生。我为 ToggleButton 创建了一个 ControlTemplate,它看起来像这样:

<ControlTemplate TargetType="ToggleButton">
    <Border>
    <Grid>
        <VisualStateManager.VisualStateGroup>
             <VisualStateGroup x:Name="CommonStates">
                  <VisualState x:Name="MouseOver">
                      <Storyboard>
                           <ColorAnimation Storyboard.TargetName="ColorChangeRect" 
                               Storyboard.TargetProperty="(Rectangle.Fill).(SolidColorBrush.Color)"
                               To="Blue" Duration="0:0:3" />
                      </Storyboard>
                  </VisualState>
             </VisualStateGroup>
        </VisualStateManager.VisualStateGroup>
        <Rectangle x:Name=ColorChangeRect" Fill="Red" />
        <ContentPresenter Content="{TemplateBinding Content}" />
    </Grid>
    </Border>
</ControlTemplate>

不幸的是,什么都没有发生。我不确定我在这里缺少什么。

4

1 回答 1

1

VisualStateManager.VisualStateGroups附加属性放在模板的根元素上,即Border代码中。这就是从那里VisualStateManager获取状态的地方。

于 2012-08-13T19:36:27.863 回答