我正在开发一个Windows 8手机项目,我注意到点击方向 右上角的更改按钮未按预期运行。
手机模拟器更改为处于横向位置,但视图不会更改,并且不会触发OnOrientationChanged
事件。
此外,从PortraitUp
开始,PhoneApplicationPage.Orientation属性在执行此操作时也不会更改。这是模拟器中的错误,还有其他人对此有什么好运吗?
Windows 8手机应该自动重新排列UI元素吗?即使您没有专门为该视图指定的布局?
答案 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">
关键是,如果您只支持Portrait
或Landscape
支持的方向,OrientationChanged
事件将不会被触发因为您的应用程序的方向赢了'实际上是改变,即使你转动手机也是如此。
至于您的其他问题,是的Windows Phone应该会自动重新排列您的UI元素,因为您会在正确设置SupportedOrientations
属性时发现。在大多数情况下,只要您没有明确设置元素的位置,自动布局就可以满足您的需求。
答案 1 :(得分:0)
方向不应该是纵向,如果希望页面在两种类型的方向中都有效,则应省略该参数并仅保留SupportedOrientations参数。 从Portrait到LandScape时,在模拟器中不起作用的是InputScope。 似乎没有人提到这一点。