3

我正在处理一个 Windows 8 手机项目,我注意到单击右上角的方向更改按钮没有按预期运行。

手机模拟器更改为处于横向位置,但视图没有改变,OnOrientationChanged事件也没有被触发。

此外,从 开始PortraitUp,PhoneApplicationPage.Orientation 属性在执行此操作时也不会更改。这是模拟器中的错误,其他人对此有任何运气吗?

Windows 8 手机是否应该自动重新排列 UI 元素?即使您没有专门为该视图指定的布局?

4

2 回答 2

3

OrientationChanged事件仍然应该在 Windows Phone 8 上运行。确保输入页面PortraitOrLandscapeSupportedOrientations属性:

<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">

关键是,如果您简单地离开PortraitLandscape以支持的方向离开,OrientationChanged则不会触发该事件,因为您的应用程序的方向实际上不会改变,即使您旋转手机也是如此。

至于您的另一个问题,是的,Windows Phone 应该自动重新排列您的 UI 元素,正如您在正确设置SupportedOrientations属性时会发现的那样。在大多数情况下,只要您没有以像素为单位明确设置元素的位置,自动布局就应该满足您的需要。

于 2012-11-16T06:50:06.110 回答
0

Orientation 不应该是 Portrait,如果您希望页面在两种类型的 Orientation 中工作,则应该省略该参数,只保留 SupportedOrientations 参数。当您从 Portrait 转到 LandScape 时,在模拟器中不起作用的是 InputScope。似乎没有人提到这一点。

于 2013-09-23T19:37:38.053 回答