• [WP]解析MainPage.xaml-布局文件


    下面的代码片段显示了MainPage.xaml的原始代码,提供了一个ApplicationBar按钮示例,默认情况下,这些代码是被注释掉的,因此在设计视图中是看不到应用程序工具条的,如果取消从<phone:Phone-ApplicationPage.ApplicationBar>开始的注释,你就会看到效果了。

    图1 显示了MainPage.xaml的文档结构。

    MainPage.xaml默认的文档结构
    图 1 MainPage.xaml默认的文档结构

    通过文档结构可以加快了解组成UI的不同控件。

    1. <phone:PhoneApplicationPage
    2. x:Class="WPBusinessApp.MainPage"
    3. xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    4. xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    5. xmlns:phone="clrnamespace:
    6. Microsoft.Phone.Controls;assembly=Microsoft.Phone"
    7. xmlns:shell="clrnamespace:
    8. Microsoft.Phone.Shell;assembly=Microsoft.Phone"
    9. xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    10. xmlns:mc="http://schemas.openxmlformats.org/markupcompatibility/
    11. 2006"
    12. FontFamily="{StaticResource PhoneFontFamilyNormal}"
    13. FontSize="{StaticResource PhoneFontSizeNormal}"
    14. Foreground="{StaticResource PhoneForegroundBrush}"
    15. SupportedOrientations="Portrait" Orientation="Portrait"
    16. mc:Ignorable="d" d:DesignWidth="480" d:DesignHeight="696"
    17. shell:SystemTray.IsVisible="True">
    18. <!—LayoutRoot contains the root grid where all other page
    19. content is placed—>
    20. <Grid x:Name="LayoutRoot" Background="Transparent">
    21. <Grid.RowDefinitions>
    22. <RowDefinition Height="Auto"/>
    23. <RowDefinition Height="*"/>
    24. </Grid.RowDefinitions>
    25. <!—TitlePanel contains the name of the application and
    26. page title—>
    27. <StackPanel x:Name="TitlePanel" Grid.Row="0"
    28. Margin="24,24,0,12">
    29. <TextBlock x:Name="ApplicationTitle" Text="MY
    30. APPLICATION" Style="{StaticResource PhoneTextNormalStyle}"/>
    31. <TextBlock x:Name="PageTitle" Text="page name"
    32. Margin="-3,-8,0,0" Style="{StaticResource
    33. PhoneTextTitle1Style}"/>
    34. </StackPanel>
    35. <!—ContentPanel - place additional content here—>
    36. <Grid x:Name="ContentGrid" Grid.Row="1">
    37. </Grid>
    38. </Grid>
    39. <!— Sample code showing usage of ApplicationBar—>
    40. <phone:PhoneApplicationPage.ApplicationBar>
    41. <shell:ApplicationBar IsVisible="True"
    42. IsMenuEnabled="True">
    43. <shell:ApplicationBarIconButton
    44. x:Name="appbar_button1" IconUri="/Images/appbar_button1.png"
    45. Text="Button 1"></shell:ApplicationBarIconButton>
    46. <shell:ApplicationBarIconButton
    47. x:Name="appbar_button2" IconUri="/Images/appbar_button2.png"
    48. Text="Button 2"></shell:ApplicationBarIconButton>
    49. <shell:ApplicationBar.MenuItems>
    50. <shell:ApplicationBarMenuItem
    51. x:Name="menuItem1" Text="MenuItem
    52. 1"></shell:ApplicationBarMenuItem>
    53. <shell:ApplicationBarMenuItem
    54. x:Name="menuItem2" Text="MenuItem
    55. 2"></shell:ApplicationBarMenuItem>
    56. </shell:ApplicationBar.MenuItems>
    57. </shell:ApplicationBar>
    58. </phone:PhoneApplicationPage.ApplicationBar>
    59. <!— End of sample code —>
    60. </phone:PhoneApplicationPage>

    LayoutRoot是PhoneApplicationPage中的根Grid,所有页面内容全部位于LayoutRoot中,需要注意的是ApplicationBar没有指定具体的名字,它也属于PhoneApplicationPage的一部分,因为应用程序工具条是一个特殊的Shell控件,TitlePanel是拥有两个TextBlock控件的StackPanel。

    ◆ApplicationTitle:默认情况下,它的“Text”属性被设为“MY APPLICATION”,你可以修改为你自己的应用程序标题名字。

    ◆PageTitle:默认情况下,它的“Text”属性被设为“page name”,如果你的应用程序有多个页面,你可以使用这个TextBlock指定一个真实的页面,如果应用程序只有一个页面需要控件,这个TextBlock就会占用不必要的空间,如果你删除它,StackPanel的高度值会自动调整,因此,当你需要放置更多的控件时,可以移除PageTitle。

    图2显示了一个TextBlock和一个位于ContentGrid内的TextBlock,Silverlight for Windows Phone支持主题,因此根据用户在设备中选择的主题不同,每个控件的外观可能都不一样。

    应用默认主题的设计视图,显示了添加的控件样式
    图 2 应用默认主题的设计视图,显示了添加的控件样式

    默认情况下,Visual Studio 2010工具箱提供了最常见的Windows Phone控件,在工具箱上下文菜单中点击“选择”可以添加更多隐藏起来的控件,例如,非常有用的老式InkPresenter控件,它允许用户直接用手指作画。

    你也可以使用Silverlight 3引入的3D投影,但如果你不想为这些3D投影编写XAML代码,那你必须选择Microsoft Expression Blend 4 for Windows Phone,实际上,如果你要创建一个复杂的UI,Expression Blend可以简化你的工作,它也允许你使用行为简化UI控件响应常见的多点触摸手势。

    Expression Blend 4提供了更精密的设计视图,当你使用ApplicationBar时,你可以从预定义图标列表为每个按钮选择不同的图标,如图3所示。

    Expression Blend 4为ApplicationBarIconButton提供了一个预定义的图标下拉列表
    图 3 Expression Blend 4为ApplicationBarIconButton提供了一个预定义的图标下拉列表

    ApplicationBar是由许多ApplicationBarIconButton控件组成的,这些图标显示在一个小圆圈内,如图4所示。

    两个ApplicationBarIconButton控件和它们对应的图标
    图 4 两个ApplicationBarIconButton控件和它们对应的图标

    ApplicationBar也可以包括ApplicationBarMenuItem控件,你可以为每个ApplicationBarIconButton和ApplicationBarMenuItem控件加入一个Click事件处理程序。注意ApplicationBar控件是可选的,当你在Visual Studio 2010或Expression Blend 4 for Windows Phone中运行项目时,生成的结果将会部署到Windows Phone 7模拟器中,应用程序第一次运行时,Windows Phone 7模拟器需要一点时间来加载,但不用关闭模拟器就可以启动另一个调试会话,保持模拟器一直运行会带来很大的方便,在你完成必要的修改后,可再次运行,如果你关闭模拟器,重新运行项目时又要再加载一次。图5显示了运行着一个非常简单的UI的模拟器,点击模拟器的开始菜单,将会看到Internet Explorer等应用程序的图标。

    运行中的Windows Phone 7模拟器
    图 5 运行中的Windows Phone 7模拟器

    图6显示了一个示例应用程序的自定义图标。

    菜单项列表中显示的应用程序自定义图标
    图 6 菜单项列表中显示的应用程序自定义图标

    图7显示了模拟器中的自定义启动画面,默认情况下,项目定义支持PhoneApplicationPage的纵向显示。

    应用程序启动时显示的自定义启动画面
    图 7 应用程序启动时显示的自定义启动画面

    下面的代码指定了SupportedOrientations和Orientation的值。

    1. SupportedOrientations="PortraitOrLandscape" Orientation="Landscape"

    控件的位置和大小将会根据设备的方向,PhoneApplicationPage的SupportedOrientations属性值不同而有所变化,如果你希望你的应用程序支持横向和纵向使用,必须将SupportedOrientations设为PortraitOrLand scape。记住一定要用模拟器测试不同的方向,避免用户旋转设备时,控件的位置和大小出现异常,图8显示了一个应用程序在模拟器中旋转方向后的样子。

    Windows Phone 7模拟器横向显示一个应用程序
    图 8 Windows Phone 7模拟器横向显示一个应用程序

    原文出处:http://www.drdobbs.com/windows/227701092;jsessionid=0LPPSGFA3UDNBQE1GHPSKH4ATMY32JVN

    原文名:Developing a Silverlight UI for Windows Phone 7

    作者:Gaston Hillar

  • 相关阅读:
    ansible语法
    hadoop本地模式安装及配置
    linux免密钥登录
    ansible配置文件
    ansible(安装)
    elasticsearch基本概念
    elasticsearch基本概念
    elasticsearch倒排索引介绍
    Flex tree展开节点问题!
    Oracle-Trigger-Insert tableA and tableB
  • 原文地址:https://www.cnblogs.com/webapplee/p/3767822.html
Copyright © 2020-2023  润新知