Как переместить раскадровку silverlight в resourceDictionary? - PullRequest
0 голосов
/ 16 ноября 2010

Я пытался просто скопировать и вставить раскадровку в словарь ресурсов, но это не работает.Итак, как мне успешно переместить анимацию раскадровки в словарь ресурсов, чтобы основной файл xaml был максимально чистым и читабельным?

Вот пример кода, который я хочу переместить в animationResource.xaml

<!-- the story board controlling the grid animation -->
<Storyboard x:Name="MoveBall">
        <DoubleAnimation Duration="0:0:1" To="200" Storyboard.TargetProperty="(UIElement.RenderTransform).(TransformGroup.Children)[3].(TranslateTransform.X)" Storyboard.TargetName="grid" d:IsOptimized="True">
            <DoubleAnimation.EasingFunction>
                <BackEase EasingMode="EaseInOut"/>
            </DoubleAnimation.EasingFunction>
        </DoubleAnimation>
    </Storyboard>


<!-- I've left out all the other default xaml like the layoutRoot grid --->

<Grid x:Name="grid" HorizontalAlignment="Left" Margin="190,180,0,220" Width="80" RenderTransformOrigin="0.5,0.5">
        <Grid.RenderTransform>
            <TransformGroup>
                <ScaleTransform/>
                <SkewTransform/>
                <RotateTransform/>
                <TranslateTransform/>
            </TransformGroup>
        </Grid.RenderTransform>
        <Ellipse Fill="#FFF4F4F5" Stroke="Black"/>
    </Grid>

1 Ответ

0 голосов
/ 17 ноября 2010

Более подробная информация о том, что именно не работает, может оказаться полезной, но на первый взгляд вы, вероятно, получите ошибку при попытке запустить раскадровку, потому что Storyboard.TargetName не может разрешиться (так как элемент с таким именембольше не находится в том же файле).

Решением для этого было бы установить цель раскадровки (в отличие от TargetName) в коде, возможно, в конструкторе для объекта, содержащего сетку, которую вы хотите анимировать,Это может выглядеть так:

Storyboard.SetTarget(App.Current.Resources["MoveBall"] as Storyboard, grid);

Возможно, вам также придется либо удалить тег d: IsOptomized, либо убедиться, что это пространство имен определено в верхней части словаря ресурсов.

Стоит упомянуть, что это делает ваш Xaml немного более читабельным за счет усложнения кода, что может оказаться не тем компромиссом, который вы хотите достичь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...