Windows 8手机模拟器方向更改按钮不会更改或触发“OnOrientationChanged”

时间:2012-11-15 23:38:09

标签: windows-phone-8 windows-phone-8-emulator

我正在开发一个Windows 8手机项目,我注意到点击方向 右上角的更改按钮未按预期运行。

手机模拟器更改为处于横向位置,但视图不会更改,并且不会触发OnOrientationChanged事件。

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

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

2 个答案:

答案 0 :(得分:3)

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

关键是,如果您只支持PortraitLandscape支持的方向,OrientationChanged事件将不会被触发因为您的应用程序的方向赢了'实际上是改变,即使你转动手机也是如此。

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

答案 1 :(得分:0)

方向不应该是纵向,如果希望页面在两种类型的方向中都有效,则应省略该参数并仅保留SupportedOrientations参数。 从Portrait到LandScape时,在模拟器中不起作用的是InputScope。 似乎没有人提到这一点。