代码之家  ›  专栏  ›  技术社区  ›  bcm

在Silverlight中设置边框背景色的动画,在VisualStateGroups中设置状态优先级

  •  1
  • bcm  · 技术社区  · 14 年前

    这是一个Silverlight/XAML问题。

    不知道我做错了什么,这似乎会引发一个错误:

    <ColorAnimation 
    Storyboard.TargetName="btnRemoveBorder" 
    Storyboard.TargetProperty="Background" 
    To="#FFDEBA29" 
    Duration="0" />
    

    第二个问题是…与选定的和集中的状态相混淆。一种状态能优先于另一种状态吗?

    1 回复  |  直到 14 年前
        1
  •  5
  •   Josh    14 年前

    背景不是一种颜色,而是一个画笔,这就是为什么它不能直接用着色动画。请尝试以下操作。

    <ColorAnimation 
        Storyboard.TargetName="btnRemoveBorder" 
        Storyboard.TargetProperty="(Border.Background).(SolidColorBrush.Color)" 
        To="#FFDEBA29" 
        Duration="0" />
    

    对于VisualStateManager问题,每个状态组中的一个状态可以是活动的。例如,在按钮的情况下,它可以同时处于焦点和按下状态。出于这个原因,您应该尝试以一种不依赖于哪个状态首先变为活动状态的方式设计状态和控制模板。通常这意味着您不应该在两个不同的状态组中对相同的元素/属性进行动画处理。但从技术上讲,没有什么能阻止你这么做。控件的最后状态(使用VisualStateManager.GoToState方法)将优先。