(博客部分内容参考Windows phone开发文档)

Windows phone的屏幕方向是利用Windows phone设备的方向传感器提供的数据实现切换的。 Windows Phone支持纵向和横向屏幕方向,其中横向屏幕包括横向朝左和横向朝右。

应用的默认方向为纵向,如果要想应用支持纵向和横向,要在 XAML 或代码中将SupportedOrientations属性设置为PortraitOrLandscape。 Windows phone开发中还提供了OrientationChanged事件,用于检测屏幕方向发生变化时触发事件行为。

将SupportedOrientations属性设置为PortraitOrLandscape后,应该对界面进行设置以确保当设备方向发生改变时设备界面能友好的显示界面 可以使用以下两种方法:

  (1)滚动方法:如果要显示列表中的内容或者如果页面上包含接连显示的不同控件,请使用此方法。 使用放置在ScrollViewer 控件内的 StackPanel 控件。StackPanel可以在应用中对子元素进行排序,而且当从纵向切换到横向时,如果屏幕上容纳不下UI元素,ScrollViewer控件支持滚动浏览StackPanel。

    若要使用滚动方法,首先将页面的SupportedOrientations属性更改为 PortraitOrLandscape。然后把“ContentPanel”区域中的默认Grid替换为 ScrollViewer 和 StackPanel。

    下面看一个例子,主要代码如下:

    MainPage.xaml

      <ScrollViewer x:Name="ContentGrid" Grid.Row="1" VerticalScrollBarVisibility="Auto">
<StackPanel Background="Transparent" >
<TextBlock Text="hello SupportedOrientations" TextWrapping="Wrap" />
<TextBlock Text="hello SupportedOrientations" TextWrapping="Wrap" />
<TextBlock Text="hello SupportedOrientations" TextWrapping="Wrap" />
<Rectangle Width="100" Height="100" Margin="12,0"
HorizontalAlignment="Left" Fill="Blue"/>
<Rectangle Width="100" Height="100" Margin="12,0"
HorizontalAlignment="Left" Fill="Yellow"/>
<Rectangle Width="100" Height="100" Margin="12,0"
HorizontalAlignment="Left" Fill="RosyBrown"/>
</StackPanel>
</ScrollViewer>

  (2)网格布局方法:将UI元素放置在 Grid 中。当发生方向更改时,用编程的方式重新将元素放置在 Grid 的不同单元格中。

    要使用网格布局方法,首先要将页面的SupportedOrientations 属性更改为 PortraitOrLandscape。然后将Grid用于内容面板。 接下来就是最关键的一步:创建一个OrientationChanged 事件处理程序并添加代码以重新将元素放置在 Grid 中。

    下面看一个例子,主要代码如下:

    MainPage.xaml

     <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Image x:Name="Image1" Grid.Row="0" Grid.Column="0"
Stretch="Fill" HorizontalAlignment="Center" Source="1.jpg" Width="200" Margin="0,0,0,238" Grid.RowSpan="2"/>
<Image x:Name="Image2" Grid.Row="1" Grid.Column="0"
Stretch="Fill" HorizontalAlignment="Center" Source="2.jpg" Width="200" Margin="0,324,0,10"/>
</Grid>

    MainPage.xaml.cs

 private void PhoneApplicationPage_OrientationChanged(object sender, OrientationChangedEventArgs e)
{
if ((e.Orientation & PageOrientation.Portrait) == (PageOrientation.Portrait))
{
Grid.SetRow(Image2, );
Grid.SetColumn(Image2, );
}
else
{
Grid.SetRow(Image2, );
Grid.SetColumn(Image2, );
}
}

Windows phone开发 页面布局之屏幕方向的更多相关文章

  1. 一步一步构建手机WebApp开发——页面布局篇

    继上一篇:一步一步构建手机WebApp开发——环境搭建篇过后,我相信很多朋友都想看看实战案例,这一次的教程是页面布局篇,先上图: 如上图所示,此篇教程便是教初学者如何快速布局这样的页面.废话少说,直接 ...

  2. (数据科学学习手札103)Python+Dash快速web应用开发——页面布局篇

    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 1 简介 这是我的系列教程Python+Dash快速web ...

  3. Android开发-页面布局

    首页布局 首页是ListView的布局 这个还需要制作ListView组件和适配器来显示数据. 关于页面 关于页面显示的是软件的基本信息和软件制作者的信息 这个就是采用基本的页面布局就行.

  4. Windows Phone开发(6):处理屏幕方向的改变

    原文:Windows Phone开发(6):处理屏幕方向的改变 俺们都知道,智能手机可以通过旋转手机来改变屏幕的显示方向,更多的时候,对于屏幕方向的改变,我们要做出相应的处理,例如,当手机屏幕方向从纵 ...

  5. Windows App开发之应用布局与基本导航

    简单演示样例看页面布局和导航 首先依照上一篇博客中的顺序来新建一个项目.新建好之后就点开MainPage.xaml開始写程序了. <Grid Background="{ThemeRes ...

  6. 背水一战 Windows 10 (2) - UI: 概述, 启动屏幕, 屏幕方向

    [源码下载] 背水一战 Windows 10 (2) - UI: 概述, 启动屏幕, 屏幕方向 作者:webabcd 介绍背水一战 Windows 10 之 UI UI 设计概述 启动屏幕(闪屏) 屏 ...

  7. Windows Phone开发(9):关于页面状态

    原文:Windows Phone开发(9):关于页面状态 按照一般做法,刚学会如何导航,还是不够的,因为要知道,手机里面的每个页面,就如同Web页面一样,是无状态的. 啥是无状态?如果我们玩过Web开 ...

  8. 学习android开发之路(一)页面布局

    Android页面布局 1.Android页面布局一共分为6种: LinearLayout(线性布局).RelativeLayout(相对布局).TableLayout(表格布局).FrameLayo ...

  9. Appcan开发之页面布局与CSS排版(转)

    在Appcan开发中,首先要进行的就是页面布局,然后在这个页面上填充数据,加上互动元素,最终构成完整的应用. 因为appcan是使用HTML5+CSS3+JavaScript技术来进行开发,所以与普通 ...

随机推荐

  1. Django - 路由对应关系

    1.对url路由关系命名,以后可以根据此名称,生成自己想要的url urls.py中: url('^fdsaafdf(\d+)/',views.index,name='indexx') url('^f ...

  2. 关于Spring的69个问题

    Spring 概述 1. 什么是spring? Spring 是个java企业级应用的开源开发框架.Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用.Spring ...

  3. PHP服务搭建

    一.PHP二进制安装(下载路径http://cn2.php.net/get/php-5.5.32.tar.gz/from/a/mirror) 1.解压: tar xf php-5.5.32.tar.g ...

  4. Swoole 源码分析——Server模块之Worker事件循环

    swManager_loop 函数 manager 进程管理 manager 进程开启的时候,首先要调用 onManagerStart 回调 添加信号处理函数 swSignal_add,SIGTERM ...

  5. 《零压力学Python》 之 第一章知识点归纳

    第一章(初识Python)知识点归纳 Python是从ABC语言衍生而来的 ABC语言是Guido参与设计的一种教学语言,为非专业编程人员所开发的. Python是荷兰程序员 Guido Van Ro ...

  6. PAT 1114 Family Property

    This time, you are supposed to help us collect the data for family-owned property. Given each person ...

  7. jquery源码分析(三)——工具函数

    jQuery.extend({ expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "&quo ...

  8. 【codeforces 797E】Array Queries

    [题目链接]:http://codeforces.com/problemset/problem/797/E [题意] 给你一个n个元素的数组; 每个元素都在1..n之间; 然后给你q个询问; 每个询问 ...

  9. 本地数据文件加载到hive表

    1.在test数据库下创建表格 hive> create table vod_record_all( > watch_time date, > device_id string, & ...

  10. 关于压缩软件gzip和xz的简单对照

    晚上因为处理磁盘报警的须要.进行了日志压缩,在此次压缩中分别使用了gzip和xz软件对文本进行了压缩.压缩的结果很令人诧异. 出于对xz好奇的原因是因为在下载内核源码时常常能够看到.xz格式的文件包. ...