我试过但似乎无法在后面的代码中设置wp7应用的页面方向。我假设它无法完成,但我想我会在这里查看。
可以吗?
如果不是,这是我的问题,有人可能会帮助。我创建了一个我设置为Landscape的应用程序,并将PageOrientation设置为LandscapeLeft。由于手机移动,它显然有时会旋转到LandscapeRight,我也不想要它。所以我做了这个
protected override void OnOrientationChanged(OrientationChangedEventArgs e)
{
if(e.Orientation == PageOrientation.LandscapeLeft)
base.OnOrientationChanged(e);
}
问题解决了,但是,我向朋友展示了应用程序并且他们玩了一个游戏。由于电话按钮和握住手机的方式,他们中的一些人更喜欢它是另一种方式(LandscapeRight)。
为了满足我的应用程序的用户,我想根据他们想要LandscapeLeft还是LandscapeRight来设置他们可以更改的设置。因为我无法改变代码的方向,我怎么能实现这个目标呢?
我确实尝试过屏幕旋转,我有点工作,即应用程序始终设置为LandscapeLeft,如果他们想要它LandscapeRight然后只需旋转变换180 *。但主要问题是MessageBox的内容会颠倒过来。
答案 0 :(得分:3)
您可以在
后面的代码中设置页面方向 this.Orientation = PageOrientation.Landscape;
但是,这仅限于设置横向或纵向 - 它似乎忽略了PortraitUp和PortraitDown以及LandscapeLeft和LandscapeRight。
你可以做的最好的事情就是强行将手机变成横向,然后使用旋转变换 - 例如,对于全屏页面(没有系统托盘或应用栏),这样可以在两者之间翻转左右风景:
private bool t;
private void Button_Click(object sender, RoutedEventArgs e)
{
SupportedOrientations = SupportedPageOrientation.Landscape;
Orientation = PageOrientation.Landscape;
if (t)
{
t = false;
this.RenderTransform = new RotateTransform() {Angle = 180, CenterX = 400, CenterY = 240};
}
else
{
t = true;
this.RenderTransform = null;
}
}
那是Xaml:
<phone:PhoneApplicationPage
x:Class="PhoneApp1.MainPage"
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"
mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="480"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="PortraitOrLandscape" Orientation="Landscape"
shell:SystemTray.IsVisible="False">
<Grid x:Name="LayoutRoot" Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
<TextBlock x:Name="ApplicationTitle" Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}"/>
<TextBlock x:Name="PageTitle" Text="page name" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
<Button Click="Button_Click" Content="one"/>
</StackPanel>
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"></Grid>
</Grid>
</phone:PhoneApplicationPage>
答案 1 :(得分:0)
只需将SupportedOrientations property设置为横向。这样,无论您的用户持有LandscapeLeft还是LandscapeRight,它都能正常工作。 There is no way to programmatically set one or the other