Управление Авторотацией в приложениях Windows 8 metro
Как я могу управлять Авторотацией Windows 8 приложений.
Я прошел через образец "вращения" из MSDN, но это чертовски запутанно , что мне нужно сделать, мне нужно иметь совершенно другой взгляд, когда в портрете и другой в ландшафте.
Я разработал свой вид для ландшафта, когда мне нужно внести изменения для портретного вида. Мне нужен способ динамического переключения между представлениями для повторного перетасовки представлений.
3 ответа:
Безусловно, самый простойспособ справиться с этим-унаследовать вашу страницу от LayoutAwarePageвместо Pageи использовать визуальный менеджер состояния внутри Expression Blend, чтобы сделать всю работу за вас.
У меня есть полная статья с большим количеством фотографий и загружаемый пример приложения здесь:
Http://jaredbienz.wordpress.com/2012/04/22/wp-to-w8-view-states-using-visual-state-manager/
Вы определенно захотите использовать здесь элемент управления FlipView. Я не знаю, используете ли вы JavaScript/HTML5 или C#/XAML, но он доступен в любом случае.
Есть отличный пример на MSDN, чтобы показать вам, как это сделать, но без дополнительного контекста по вашей проблеме, я не знаю, насколько больше я могу помочь.
Http://code.msdn.microsoft.com/windowsapps/FlipView-control-sample-18e434b4
Вы можете обрабатывать изменения ориентации двумя основными способами...
1) подход грубой силы. Провод в событие orientationchanged...Windows.Graphics.Display.DisplayProperties.OrientationChanged += DisplayProperties_OrientationChanged;
В дескрипторе событий проверьте ориентацию и перейдите на страницу, которая была специально разработана для этой ориентации...
if (Windows.Graphics.Display.DisplayProperties.CurrentOrientation == DisplayOrientations.Portrait) this.Frame.Navigate(typeof(PortraitPage));
Плюсы... легко создавать страницы, оптимизированные для заданных ориентаций Аферы... необходимость обработки данных навигации и состояния между страницами
2) Создайте одну страницу, которая изменяет свой макет. использование визуальных состояний. Вы по-прежнему подключаетесь к событию orientationchanged, но вызываете
VisualStateManager.GoToState(this,"Portrait",true).
или что-то подобное в зависимости от того, как вы называете свои визуальные состояния.Плюсы... измените макет без навигации, и вы можете легко добавлять интересные анимации Аферы... более сложный макет может быть сложнее, если вы не знакомы с расширенными макетами xaml и viewStates
Если вы посмотрите на образцы шаблонов (кроме пустых), они включают LayoutAwarePage, который обрабатывает viewstate переходы для вас, немного упрощающие вещи.