2010-03-30 60 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中重用故事板。