Раскадровки в ResourceDictionary - PullRequest
1 голос
/ 30 марта 2010

Итак, я хотел бы переместить свои раскадровки в файл ResourceDictionary, и у меня возникли проблемы с этим. Я искал повсюду, и это связано с тем, чтобы сделать «Ресурс» доступным, но как мне это сделать в silverlight, когда нет атрибута x: Shared. Вот код

 <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 Ответ

1 голос
/ 30 марта 2010

Вы не можете поместить раскадровку в ресурс, потому что это объект с состоянием. Он знает, начал ли он анимацию, где находится на временной шкале и т. Д. Также его дочерние анимации получают ссылки на объекты и свойства, которые они анимируют.

Обычно один помещает раскадровки для повторного использования в VisualStateManager элемента в шаблоне элемента управления.

...