Pergunta

Então, eu gostaria de mudar meus storyboards para um arquivo de recursos e estou tendo problemas para fazer isso. Eu olhei em todos os lugares e isso envolve tornar o "recurso" compartilhável, mas como faço isso no Silverlight quando não há atributo X: compartilhado. Aqui está o código

 <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>

Aqui está o que eu tenho em xaml

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

E aqui está o erro que eu recebo

ERRO: O elemento já é o filho de outro elemento.

Isso só me dá esse erro quando eu coloquei storyboards, nada mais (ex: Styles). Estou usando o Silverlight 3 e não o WPF.

Foi útil?

Solução

Você não pode colocar um storyboard em um recurso porque é um objeto com estado. Ele sabe se começou a animar, onde está na linha do tempo etc. Além disso, suas animações infantis adquirem referências aos objetos e propriedades que estão animando.

Normalmente, um coloca storyboards a serem reutilizados no VisualStatemanager de um elemento no modelo de controle.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top