Переход WP7 между Canvas в сетке

У меня есть два холста в сетке, полные «изображения» сцены, которые я хочу перевести, мне интересно, как я буду переходить между этими двумя элементами управления Canvas.

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

Любые предложения о том, как я могу добиться этого программно?

Спасибо.

Редактировать: я применил этот метод, но у меня возникли проблемы, кто-нибудь может сказать мне, если я использую его неправильно?

     private void doTransitionIn(Canvas slide)
    {
        SlideTransition slideLeft = new SlideTransition();
        slideLeft.Mode = SlideTransitionMode.SlideDownFadeIn;

        ITransition transition = slideLeft.GetTransition(slide);

        transition.Completed += delegate { transition.Stop(); }; transition.Begin();
    }

    private void doTransitionOut(Canvas slide)
    {
        SlideTransition slideLeft = new SlideTransition();
        slideLeft.Mode = SlideTransitionMode.SlideDownFadeOut;

        ITransition transition = slideLeft.GetTransition(slide);
        transition.Completed += delegate { transition.Stop(); }; transition.Begin();
    }

И вот как я его использую:

            SceneGrid.Children.Add(nextCanvas);
            doTransitionIn(nextCanvas);
            doTransitionOut(currentCanvas);
            SceneGrid.Children.Remove(currentCanvas);

Проблема в том, что анимация, кажется, начинается только с части экрана вниз, например, я вижу, что она скользит только последние 20 или около того пикселей, а не скользит полностью.


person Hamid    schedule 18.05.2011    source источник


Ответы (2)


В зависимости от того, что вы подразумеваете под «переходом», я бы посмотрел на создание StoryBoard, чтобы анимировать скрытие/показ каждого холста.

person Matt Lacey    schedule 18.05.2011
comment
У меня сработала раскадровка, я попробовал TransitionContentControl, но, похоже, он не имел времени и происходил мгновенно, создавая беспорядок в эффекте. - person Hamid; 25.05.2011

Я бы рекомендовал использовать TransitioningContentControl, который является частью Silverlight Toolkit. Чтобы использовать этот элемент управления, сделайте свой первый Canvas Content этого элемента управления. Для перехода просто измените Content на следующий Canvas, а TransitioningContentControl сделает все остальное!

Существует ряд сообщений в блогах, в которых содержатся учебные пособия по этому элементу управления:

http://blogs.academicclub.org/uidev/2010/06/12/transitioning-content-in-silverlight/

person ColinE    schedule 18.05.2011
comment
Спасибо, это звучит как подходящее решение, однако веб-пример silverlight мне мало помогает, и я не могу найти ничего подходящего. Можно ли получить пример? - person Hamid; 18.05.2011
comment
WP7 Silverlight имеет точно такое же управление, как и веб-версия Silverlight. См.: wildermuth.com/2010/07/16/ - person ColinE; 18.05.2011
comment
Я тоже видел этот пост в блоге, он все это встроил. Все они используют корень макета или саму страницу, что на самом деле не помогает мне понять, как это работает. Я хотел бы увидеть пример кода, применяющего шаблон/transitionconstrol/стиль и т. д. для Canvas/Grid (в зависимости от того, на чем я должен его выполнять). - person Hamid; 18.05.2011