如果我在Package.appxmanifest
文件中将支持的方向设置为纵向和横向,WP8.1上的默认行为,当我移动设备(旋转模拟器)时,布局会自动更改。
我想在每页的基础上启用此行为(或者,对某些页面禁用此行为)。
我尝试使用此RT示例 - http://msdn.microsoft.com/en-us/library/windows/apps/dn263110.aspx - '如何停止使用LayoutAwarePage':
protected override void OnNavigatedTo(NavigationEventArgs e)
{
base.OnNavigatedTo(e);
this.Loaded += PageLoaded;
this.Unloaded += PageUnloaded;
}
private void PageUnloaded(object sender, RoutedEventArgs e)
{
Window.Current.SizeChanged -= Window_SizeChanged;
}
private void PageLoaded(object sender, RoutedEventArgs e)
{
Window.Current.SizeChanged += Window_SizeChanged;
}
private void Window_SizeChanged(object sender, Windows.UI.Core.WindowSizeChangedEventArgs e)
{
// layout my ui
}
但是,无论是否将清单添加到清单中,都不会调用Window_SizeChanged。
答案 0 :(得分:8)
好的,我的谷歌搜索应该更加彻底。要在运行时执行此操作:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
Windows.Graphics.Display.DisplayInformation.AutoRotationPreferences = DisplayOrientations.Portrait
| DisplayOrientations.Landscape
| DisplayOrientations.PortraitFlipped;
}
然后取消效果
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
Windows.Graphics.Display.DisplayInformation.AutoRotationPreferences = DisplayOrientations.Portrait;
}