WP7 - Fade пользовательский контроль с помощью кода, а не XAML - PullRequest
3 голосов
/ 18 мая 2011

Я пытаюсь открыть пользовательский элемент управления, а затем исчезнуть в течение 3 секунд. Я пытаюсь использовать следующий код, но продолжаю получать неверное значение параметра при присваивании Popup.LoadedEvent, а также Splash.LoadedEvent. Что я делаю не так?

Splash s = new Splash();
            DoubleAnimation fade = new DoubleAnimation()
            {
                Duration = new Duration(TimeSpan.FromMilliseconds(3000)),
                From = 1.0,
                To = 0.0,
                RepeatBehavior = new RepeatBehavior(1)
            };

            fade.Completed += new EventHandler(fade_Completed);

            this.popup = new Popup();
            this.popup.Child = s;

            EventTrigger et = new EventTrigger();
            et.RoutedEvent = Popup.LoadedEvent;

            Storyboard sb = new Storyboard();
            sb.Children.Add(fade);

            BeginStoryboard bs = new BeginStoryboard() { Storyboard = sb };

            et.Actions.Add(bs);

            this.popup.Triggers.Add(et);
            this.popup.IsOpen = true;

Я также не могу понять, где / как установить целевое свойство.

Редактировать: я смог получить ответ, используя ссылку @ Titan2782. Я отправил это в ответе ниже.

Ответы [ 4 ]

3 голосов
/ 18 мая 2011

проверить http://www.windowsphonegeek.com/articles/wp7-transitions-in-depth--custom-transitions он имеет некоторый код для работы с раскадровкой и установить целевые свойства.

1 голос
/ 19 мая 2011

Благодаря ответу @ Titan2782 я смог понять это

    Splash s = new Splash();
                DoubleAnimation fade = new DoubleAnimation()
                {
                    Duration = new Duration(TimeSpan.FromMilliseconds(4000)),
                    From = 1.0,
                    To = 0.0,
                    RepeatBehavior = new RepeatBehavior(1)

                };

                fade.Completed += new EventHandler(fade_Completed);

                this.popup = new Popup();
                this.popup.Child = s;

                Storyboard.SetTargetProperty(fade, new PropertyPath(UIElement.OpacityProperty));
                sb.Children.Add(fade);
                Storyboard.SetTarget(sb, s);           

                this.popup.IsOpen = true;

                sb.Begin();
1 голос
/ 18 мая 2011

У меня есть пример с кнопкой в ​​VB, не должно быть трудно перевести на c #:

Dim Fade As New Animation.DoubleAnimation
Fade.From = 0.5
Fade.To = 1
Fade.Duration = TimeSpan.FromSeconds(3)

Animation.Storyboard.SetTarget(Fade, button)
Animation.Storyboard.SetTargetProperty(Fade, New PropertyPath(Button.OpacityProperty))

Dim sb As New Animation.Storyboard
sb.Children.Add(highlight)

sb.Begin()

Полагаю, это работает и с Popup.

1 голос
/ 18 мая 2011

Вы должны посмотреть на вещи переходов в наборе инструментов Windows Phone: http://blogs.msdn.com/b/wfaught/archive/2010/11/15/transitions.aspx

это всего пара строк, чтобы получить эти переходы.

У вас могут возникнуть некоторые проблемы, потому что вы используете всплывающее окно, а всплывающее окно не существует в визуальном дереве?

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