Переход страницы UWP, изменение направления анимации - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть приложение UWP, в котором я часто использую метод Frame.Navigate (). По умолчанию он выполняет переходы с анимацией, которая заставляет следующий экран скользить снизу. Однако для моего случая имеет больше смысла, если следующий экран появляется справа или слева.

Итак, чтобы изменить это поведение по умолчанию, я использовал следующий код из этого документа MSDN :

// Navigate to the right, ie. from LeftPage to RightPage
myFrame.Navigate(typeof(RightPage), null, new SlideNavigationTransitionInfo() { SlideNavigationTransitionEffect.FromRight } );

// Navigate to the left, ie. from RightPage to LeftPage
myFrame.Navigate(typeof(LeftPage), null, new SlideNavigationTransitionInfo() { SlideNavigationTransitionEffect.FromLeft } );

но я получаю эту ошибку:

Невозможно инициализировать тип «SlideNavigationTransitionInfo» с инициализатор коллекции, потому что он не реализует 'System.Collections.IEnumerable'

Как изменить код

myFrame.Navigate(typeof(RightPage), null, new SlideNavigationTransitionInfo() { Effect = SlideNavigationTransitionEffect.FromRight } );

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

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

Целевая версия: 1809 (10,0; сборка 17763);

Мин. Версия: (10,0; 10240)

но проблема остается. Есть идеи как это решить?

Ответы [ 2 ]

0 голосов
/ 14 ноября 2018

Если вы предпочитаете, вы можете просто использовать переходы страниц XAML, это также совместимо с минимальной версией 10240: просто поместите следующие строки в ваш RightPage или LeftPage XAML-источник.

<Page.Transitions>
   <TransitionCollection>
      <EdgeUIThemeTransition Edge="Left">
      </EdgeUIThemeTransition>   
   </TransitionCollection>
</Page.Transitions>
0 голосов
/ 14 ноября 2018

Первая синтаксическая ошибка довольно очевидна; в то время как InvalidCastException, по-видимому, вызван тем, что вы запускаете свой код в ОС с версией ниже 1809.

Перечисление SlideNavigationTransitionEffect было добавлено в 1809. Вы можете успешно скомпилировать свой код, потому что вы установили SDK для 1809, но во время выполнения, если вы не проверите заранее, этот код завершится неудачей, если время выполнения не ' не поддерживает это.

//remove this from your code and it should be running well
Effect = SlideNavigationTransitionEffect.FromRight 

В этом случае вы можете установить минимальную версию на 1809, чтобы принудительно установить это приложение, можно установить только на 1809 или выше. Или вы можете написать версию адаптивного кода , чтобы проверить поддержку ОС для API, таким образом, вы можете сохранить минимальную версию Min на желаемом уровне, чтобы ориентироваться на более широкий диапазон устройств.

...