Обновите значение KeyTime LinearDoubleKeyFrame из кода - PullRequest
4 голосов
/ 06 августа 2010

У меня есть несколько xaml, подобных этому:

<UserControl.Resources>
    <Storyboard x:Name="sbLogo" x:Key="onLoadeducLogo" Completed="sbLogo_Completed">
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="image">
            <LinearDoubleKeyFrame x:Name="pauseKeyFrame" KeyTime="0:0:2" Value="0"/>
            <LinearDoubleKeyFrame x:Name="fadeInKeyFram" KeyTime="0:0:6" Value="1"/>
            <LinearDoubleKeyFrame x:Name="fadeOutKeyFrame" KeyTime="0:0:12" Value="0"/>
        </DoubleAnimationUsingKeyFrames>
    </Storyboard>
</UserControl.Resources>

Я хотел бы обновить KeyTime значения LinearDoubleKeyFrame элементов из кода UserControl в C #.

Я подумал, что, возможно, смогу сделать это, сославшись на эти элементы по x:Name, но я не добиваюсь большого успеха.Я также подумал, что, может быть, я смогу связать значения с полем в коде, но там тоже нет успеха.

У кого-нибудь есть подсказки, чтобы подтолкнуть меня в правильном направлении.

Спасибо, Фил

Ответы [ 2 ]

5 голосов
/ 06 августа 2010

Как вы пытались ссылаться на LinearDoubleKeyFrame объекты в коде?

Я думаю, вам нужно сделать что-то вроде:

var storyboard = (Storyboard)FindResource("onLoadeducLogo");
var animation = (DoubleAnimationUsingKeyFrames)storyboard.Children[0];
var keyframe1 = animation.KeyFrames[0];

keyframe1.KeyTime = KeyTime.FromTimeSpan(new TimeSpan(0,0,0,1)); // 1 second
0 голосов
/ 25 февраля 2011
Image creatureImage = new Image();    
Storyboard fadeInFadeOut = new Storyboard();

    DoubleAnimationUsingKeyFrames dbAnimation = new DoubleAnimationUsingKeyFrames();
                dbAnimation.Duration = TimeSpan.FromSeconds(2);
                LinearDoubleKeyFrame lDKF1 = new LinearDoubleKeyFrame();
                lDKF1.Value = 1;
                lDKF1.KeyTime = TimeSpan.FromSeconds(0);
                dbAnimation.KeyFrames.Add(lDKF1);
                //
                LinearDoubleKeyFrame lDKF2 = new LinearDoubleKeyFrame();
                lDKF2.Value = 0.6;
                lDKF2.KeyTime = TimeSpan.FromSeconds(0.5);
                dbAnimation.KeyFrames.Add(lDKF2);
                //
                LinearDoubleKeyFrame lDKF3 = new LinearDoubleKeyFrame();
                lDKF3.Value = 1;
                lDKF3.KeyTime = TimeSpan.FromSeconds(0.5);
                dbAnimation.KeyFrames.Add(lDKF3);
                //
                LinearDoubleKeyFrame lDKF4 = new LinearDoubleKeyFrame();
                lDKF4.Value = 0;
                lDKF4.KeyTime = TimeSpan.FromSeconds(1);
                dbAnimation.KeyFrames.Add(lDKF4);

                Storyboard.SetTarget(dbAnimation, creatureImage);
                Storyboard.SetTargetProperty(dbAnimation, new PropertyPath(Image.OpacityProperty));
                fadeInFadeOut.Children.Add(dbAnimation);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...