我正在处理一个 Windows 8 手机项目,我注意到单击右上角的方向更改按钮没有按预期运行。
手机模拟器更改为处于横向位置,但视图没有改变,OnOrientationChanged
事件也没有被触发。
此外,从 开始PortraitUp
,PhoneApplicationPage.Orientation 属性在执行此操作时也不会更改。这是模拟器中的错误,其他人对此有任何运气吗?
Windows 8 手机是否应该自动重新排列 UI 元素?即使您没有专门为该视图指定的布局?
我正在处理一个 Windows 8 手机项目,我注意到单击右上角的方向更改按钮没有按预期运行。
手机模拟器更改为处于横向位置,但视图没有改变,OnOrientationChanged
事件也没有被触发。
此外,从 开始PortraitUp
,PhoneApplicationPage.Orientation 属性在执行此操作时也不会更改。这是模拟器中的错误,其他人对此有任何运气吗?
Windows 8 手机是否应该自动重新排列 UI 元素?即使您没有专门为该视图指定的布局?
该OrientationChanged
事件仍然应该在 Windows Phone 8 上运行。确保输入页面PortraitOrLandscape
的SupportedOrientations
属性:
<phone:PhoneApplicationPage
x:Class="WP8Application.Page1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="480"
shell:SystemTray.IsVisible="True"
SupportedOrientations="PortraitOrLandscape" Orientation="Portrait"
OrientationChanged="PhoneApplicationPage_OrientationChanged_1">
关键是,如果您简单地离开Portrait
或Landscape
以支持的方向离开,OrientationChanged
则不会触发该事件,因为您的应用程序的方向实际上不会改变,即使您旋转手机也是如此。
至于您的另一个问题,是的,Windows Phone 应该自动重新排列您的 UI 元素,正如您在正确设置SupportedOrientations
属性时会发现的那样。在大多数情况下,只要您没有以像素为单位明确设置元素的位置,自动布局就应该满足您的需要。
Orientation 不应该是 Portrait,如果您希望页面在两种类型的 Orientation 中工作,则应该省略该参数,只保留 SupportedOrientations 参数。当您从 Portrait 转到 LandScape 时,在模拟器中不起作用的是 InputScope。似乎没有人提到这一点。