Windows Phone 8.1 Билингвальная анимация слайдов

Я хотел бы добавить переход страницы в мое приложение Windows Phone 8.1 таким образом, чтобы следующая страница будет скользить в нижней части экрана. Подобный эффект используется при запуске Bing, нажав кнопку "Поиск".

К сожалению, MSDN не очень описателен в этой теме. Кто-нибудь знает, как реализовать такую ​​анимацию?

Ответ 1

Сначала вам нужно отключить текущие переходы для Frame - лучшее место будет в App.xaml.cs, где создаётся rootframe, но зависит от того, как инициализируется ваше приложение. Вот, например, в конструкторе MainPage:

public MainPage()
{
    this.InitializeComponent();
    Frame mainFrame = Window.Current.Content as Frame;
    mainFrame.ContentTransitions = null;
}

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

В Page.xaml:

<Page.Transitions>
    <TransitionCollection>
       <PaneThemeTransition Edge="Bottom"/>          
    </TransitionCollection>
</Page.Transitions>

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

Конечно, вы также можете определить Frame new ContentTransitions, чтобы они были по умолчанию для всех Pages - например:

// instead of null put in MainPage constructor:
mainFrame.ContentTransitions = new TransitionCollection { new PaneThemeTransition { Edge = EdgeTransitionLocation.Bottom } };

Ответ 2

Переходы по умолчанию могут быть переопределены на основе навигации по коду.

NavigationTransitionInfo transitionInfo = new SlideNavigationTransitionInfo();
Frame.Navigate(typeof(SecondPage), false, transitionInfo);

Приведенный выше код заставит SecondPage скользить снизу вверх так, как вы хотите. Однако это относится только к этому конкретному сценарию навигации. Если вы хотите, чтобы SecondPage скользил во время навигации из любого места, установите NavigationTransitionInfo в XAML.

<Page.Transitions>
    <TransitionCollection>
        <NavigationThemeTransition>
            <NavigationThemeTransition.DefaultNavigationTransitionInfo>
                <SlideNavigationTransitionInfo/>
            </NavigationThemeTransition.DefaultNavigationTransitionInfo>
        </NavigationThemeTransition>
    </TransitionCollection>
</Page.Transitions>

Это заставит страницу скользить во время навигации. Это значение по-умолчанию может быть переопределено с помощью кода для определенных сценариев навигации.