Storyboard in ResourceDictionary
-
23-09-2019 - |
Domanda
Quindi vorrei spostare i miei storyboard in un file ResourceDictionary e sto avendo difficoltà a farlo. Ho guardato dappertutto e si tratta di fare la "risorsa" condivisibili, ma come faccio a farlo in Silverlight quando non c'è x: attributo comune. Ecco il codice
<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>
Ecco quello che ho in XAML
<Grid.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Resources/ViewResources.xaml" />
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Grid.Resources>
e qui è l'errore che ottengo
Errore: Element è già il figlio di un altro elemento.
Mi dà solo errore quando ho messo in storyboard, niente altro (es: stili). Sto usando Silverlight 3 e non WPF.
Soluzione
Non è possibile inserire uno storyboard in una risorsa perché è un oggetto stateful. Si sa se è iniziata l'animazione, dove si trova nella timeline ecc Inoltre le sue animazioni per bambini acquisiscono una riferimenti agli oggetti e le proprietà che stanno animando.
In genere si mette storyboard per essere riutilizzati nel VisualStateManager di un elemento in modello di controllo.