Вопрос

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

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

Это было полезно?

Решение

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top