2010-03-30 57 views
1

所以我想将我的Storyboard移动到ResourceDictionary文件中,并且我在这样做时遇到了麻烦。我已到处寻找,它涉及使“资源”可共享,但如何在没有x:共享属性的情况下在silverlight中执行此操作。下面是代码ResourceDictionary中的故事板

<Storyboard x:Key="GreenButtonLight" > 
     <ColorAnimationUsingKeyFrames BeginTime="00:00:00" 
             Storyboard.TargetName="GreenBelow" 
             Storyboard.TargetProperty="(Shape.Fill).(GradientBrush.GradientStops)[0].(GradientStop.Color)"> 
      <SplineColorKeyFrame KeyTime="00:00:00" 
           Value="#FF75F45D" /> 
      <SplineColorKeyFrame KeyTime="00:00:00.1000000" 
           Value="#FFA5F796" /> 
      <SplineColorKeyFrame KeySpline="1,0,1,0.06" 
           KeyTime="00:00:00.5000000" 
           Value="#FF75F45D" /> 
     </ColorAnimationUsingKeyFrames> 
</Storyboard> 

这是我在XAML

<Grid.Resources> 
    <ResourceDictionary> 
    <ResourceDictionary.MergedDictionaries> 
     <ResourceDictionary Source="Resources/ViewResources.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 
      </ResourceDictionary> 
     </Grid.Resources> 

,这里是错误,我得到

错误:元素已经是另一个元素的孩子。

当我放入故事板时,它只会给我那个错误,没有别的(例如:样式)。我使用的是Silverlight 3,而不是wpf。

回答

1

您不能将故事板放置在资源中,因为它是一个有状态的对象。它知道它是否已经开始动画制作,它在时间线上的位置等。它的子动画也获得对它们动画的对象和属性的引用。

通常,一个地方将在控制模板中的元素的VisualStateManager中重用故事板。