Windows App开发之应用布局与基本导航
简单演示样例看页面布局和导航
首先依照上一篇博客中的顺序来新建一个项目。新建好之后就点开MainPage.xaml開始写程序了。
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="100"/>
<RowDefinition Height="auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="4*"/>
<ColumnDefinition Width="6*"/>
</Grid.ColumnDefinitions>
<StackPanel Grid.Row="0" Grid.ColumnSpan="2" Orientation="Horizontal">
<TextBlock Text="页面布局" Foreground="Red" FontSize="40" Margin="12"
Width="200" Height="80" />
<TextBlock Text="基本导航" Foreground="Green" FontSize="40" Margin="12"
Width="200" Height="80" />
</StackPanel>
<Grid Grid.Row="1" Grid.Column="0">
<Button Content="导航到第二页" Foreground="Blue" FontSize="35"
Margin="12,480,0,0" Name="btnGoSecondPage" Click="btnGoSecondPage_Click"/>
</Grid>
<Canvas Grid.Row="1" Grid.Column="1" HorizontalAlignment="Center" VerticalAlignment="Center">
<Rectangle Fill="Blue"/>
<Rectangle Fill="Yellow" Height="100" Width="100" Canvas.Left="50" Canvas.Top="20"/>
<Rectangle Fill="White" Height="100" Width="100" Canvas.Left="70" Canvas.Top="90"/>
</Canvas>
</Grid>
以下就来依次介绍上面这段代码究竟做了写什么。
1)首先将最外围的Grid控件分成了3行2列。当中第一行的高度是100像素。第二行的高度是自己主动的。所谓自己主动呢,就是会依据将来在当中加入的控件的所占的高度来决定的;第三行的高度就是剩余的啦,这么说可能不够清楚究竟星号是什么意思。那再看看切成的这两列就好啦。它的宽度比就是4:6。
非常显然不一定是非得比例加起来等于10,即便是4:100也能够的。
2)在最外层的Grid内嵌套了一个StackPanel,而且将其定位在第一行,而且横跨2列。
Grid最擅长的就是操作详细的像素,它能够将不论什么控件精确的定位到不论什么一点。而StackPanel最重要的Orientation属性则能够安排其内的控件的排列方式,比方这里就是让两个TextBlock控件按水平方向来排列。
3)在这里又嵌套了Grid,里面有一个Button。Foreground属性是定义字体颜色。FontSize属性是定义字体大小。以下重点来看看Margin属性。
我们定义的Marin=”12,480,0,0”,从左至右依次是左、上、右和下四个方向距离外围边框的距离。
在设计器中已经标注了左边距是12。而上边距没有体现出来。但确实是480。
还记得之前的那个auto么,在这里就体现出来了啦。由于下边距是0,所以Grid的切割线就刚好在Button以下啦。但为什么右边的切割线不刚好在Button的右边呢。这是由于我们之前的2列是依照4:6的比例来切的呀。而不是设置的auto。
4)Canvas位于其外围的Grid控件的正中央,HorizontalAligment和VerticalAlignment分别表示水平方向和垂直方向的摆放位置。Canvas.Top和Canvas.Left分别表示离Canvas最上边和最下边的距离。
5)给Button设置一个名字。然后敲下Click=”“之后,就会出现例如以下图所看到的。这是直接按下Enter键就能够直接命名咯。
小技巧啦。
然后双击Click事件的名字后,直接按F12键就会自己主动生成一个事件而且跳转到C#文件啦。以下这段代码就是会让页面从MainPage跳转到SecondPage。
private void btnGoSecondPage_Click(object sender, RoutedEventArgs e)
{
if (this.Frame != null)
{
this.Frame.Navigate(typeof(SecondPage));
}
}
写完这段代码也先别急着调试,由于还没有创建SecondPage呢。建议创建好之后最好再往里面加点东西。不然跳转过去了就是黑茫茫的一片还以为是出Bug了呢,加入一个主要的TextBlock就能够了。
<TextBlock Text="Second Page" FontSize=" 50"/>
我再来简介一下VS中经常使用的一些东西,仅仅面向刚開始学习的人。在以下的图中,方框1处能够让设计器和XAML代码的位置对换哦。截图里我就是将设计器放到了右边,只是仅仅是为了截图,设计器还是在左边比較习惯。
方框2处能够让设计器和XAML代码上下摆列和左右摆列也能够不显示它们中的某一个。
旁边还能够设置网格对齐以及设计器的缩放比例。
方框3和方框4中能够设置的东西就太多啦,能够设置渐变色。也能够设置Click事件。还能够设置控件的布局等。
应用栏布局
Windows上的modern应用我倒是不经常使用。只是WP8上的应用我认为和安卓什么的最大的差别就是它的应用栏了,以下就来讲讲应用栏是怎么做出来的。
在Document Outline(在视图中找到。或者按Ctrl+W。U)中有TopAppBar和BottomAppBar,各自是顶部和底部的应用栏。点鼠标右键能够高速定义AppBar和CommandBar。通常将AppBar放在应用上端也就是TopAppBar内,CommandBar放在下端也就是BottomAppBar内。
也许非常多人都不知道,在Modern应用下,按Win+Z键能够直接呼出应用栏哟。另外要注意AppBar与CommandBar不同,前者仅仅能包括一条子内容,通常定义一个Grid控件,然后在Grid内嵌套其它控件。以下贴出一段AppBar的演示样例:
<Page.TopAppBar>
<AppBar IsSticky="True">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<StackPanel Orientation="Horizontal">
<Button Content="Main Page" Width="140" Height="80" Click="AppBarButton1_Click"/>
<Button Content="Second Page" Width="140" Height="80" Click="AppBarButton2_Click"/>
<Button Content="Third Page" Width="140" Height="80" Click="AppBarButton3_Click"/>
<TextBlock Text="AppBar" Foreground="Red" FontSize="40" VerticalAlignment="Center" Margin="12" Width="200"/>
</StackPanel>
<SearchBox Grid.Column="1" Width="300" Height="50" HorizontalAlignment="Right"/>
</Grid>
</AppBar>
</Page.TopAppBar>
<Page.BottomAppBar>
<CommandBar>
<AppBarButton Label="Refresh" Icon="Refresh"
Click="appBarBtn4_Click"/>
<AppBarButton Label="Redo" Icon="Redo"
Click="appBarBtn5_Click"/>
<CommandBar.SecondaryCommands>
<AppBarButton Label="Add" Icon="Add" Click="AppBarButton6_Click"/>
<AppBarButton Label="Delete" Icon="Delete" Click="AppBarButton7_Click"/>
<AppBarButton Label="Edit" Icon="Edit" Click="AppBarButton8_Click"/>
</CommandBar.SecondaryCommands>
</CommandBar>
</Page.BottomAppBar>
可是大家应该都发现了。默认情况下应用栏是隐藏起来的,假设想要在载入的时候就是启动的,那该怎么办呢?非常easy。直接在AppBar定义IsOpen属性为真就好。
<CommandBar IsOpen="True">
<!-- -->
</CommandBar>
另外还有粘滞属性哟。也就是说。原本当用右键呼出应用栏后,再用左键等点一下其它位置应用栏就会自己消失啦,但假设IsSticky属性为真的话呢,非得再多按几下右键才会消失的。
<AppBar IsSticky="True">
<!-- -->
</AppBar>
除了在XAML中定义这些属性外,我们也能够在后台代码中用函数来实现呢,这里我就是用的2个Button的Click事件。
private void btnSetAppBar_Click(object sender, RoutedEventArgs e)
{
if (this.TopAppBar != null)
{
this.TopAppBar.IsSticky = true;
}
}
private void btnSetAppBar2_Click(object sender, RoutedEventArgs e)
{
if (BottomAppBar.IsOpen ==false)
{
this.BottomAppBar.IsOpen = true;
}
}
既然是通用应用了,那么WP这边自然也是相似的。只是临时还仅仅有BottomAppBar却没有TopAppBar呢,以下是系统给生成的代码,和Windows上的一样。
<Page.BottomAppBar>
<CommandBar>
<AppBarButton Icon="Accept" Label="appbarbutton"/>
<AppBarButton Icon="Cancel" Label="appbarbutton"/>
</CommandBar>
</Page.BottomAppBar>
想要了解很多其它关于应用栏的内容。大家能够參考下一篇中的应用栏。
经常使用属性
Background:背景色
BorderBrush:边框色
BorderThickness:边框大小
<Button Background="Red" BorderBrush="Blue" BorderThickness="5" Height="66" Width="153"/>
ClickMode:点击模式,详细有3种:悬停(Hover)、按压(Press)、释放(Release)
Content:内容
FontFamily:字体
FontSize:字体大小
Foreground:字体颜色
FontStretch:字体在屏幕上的展开程度
Windows App开发之应用布局与基本导航的更多相关文章
- 安卓app开发-05-Android xml布局详细介绍
安卓app开发-05-Android xml布局详细介绍 虽然说有 墨刀,墨客 这些图形化开发工具来做 Android 的界面设计,但是我们还是离不开要去学习做安卓原生app,学习 xml 布局还是必 ...
- 【万里征程——Windows App开发】控件大集合2
以下再来看看一些前面还没有讲过的控件,只是控件太多以至于无法所有列出来,大家仅仅好举一反三啦. Button 前面最经常使用的控件就是Button啦,Button另一个有意思的属性呢.当把鼠标指针放在 ...
- Windows App开发之文件与数据
读取文件和目录名 这一节開始我们将陆续看到Windows App是如何操作文件的. 在Windows上读取文件名称.目录名 首先我们在XAML中定义一个Button和TextBlock,将读取文件/目 ...
- Windows Phone开发(8):关于导航的小技巧
原文:Windows Phone开发(8):关于导航的小技巧 前文用几个例子对导航做了简单介绍,在一般应用中,使用上一篇文章中说到的方法,其实也够用了,不过,为了能够处理一些特殊的情况,有几个小技巧还 ...
- Windows App开发之经常使用控件与应用栏
控件的属性.事件与样式资源 怎样加入控件 加入控件的方式有多种,大家更喜欢以下哪一种呢? 1)使用诸如Blend for Visual Studio或Microsoft Visual Studio X ...
- Windows App开发之集成设置、帮助、搜索和共享
应用设置和应用帮助 "设置"合约 上一节中我们学习了怎样将应用设置保存到本地.这样的方式是通过在App内加入设置选项,这里另一种方式. 微软将其称为"设置"合约 ...
- Windows App开发之集合控件与数据绑定
为ListView和GridView加入数据 ListView採用垂直堆叠得方式显示数据.而GridView则採用水平堆叠得方式. 长相的话嘛,它们都几乎相同. <Grid Name=" ...
- Windows App开发之编辑文本与绘制图形
编辑文本及键盘输入 相信大家都会使用TextBox,但假设要让文本在TextBox中换行该怎么做呢?将TextWrapping属性设置为Wrap,将AcceptsReturn属性设置为True就好咯. ...
- 【万里征程——Windows App开发】DatePickerFlyout、TimePickerFlyout的使用
已经有挺长时间没有更新这个专栏了,只是刚才有网友私信问我一个问题如今就火速更新上一篇~ 这一篇解说在WP上DataPickerFlyout和TimePickerFlyout的使用.但它们仅仅能在WP上 ...
随机推荐
- Java线程池相关类-Executor框架
1.Executor 接口源码: public interface Executor { /** * Executes the given command at some time in the fu ...
- CSS 内外边距 float positio属性
一.外边距和内边 margin: 用于控制元素与元素之间的距离 外边距:margin的最基本用途就是控制元素周围空间的间隔,从视觉角度上达到相互隔开的目的. padding: ...
- vue.js高仿饿了么(前期整理)
1.熟悉项目开发流程 需求分析——>脚手架工具——>数据mock——>架构设计——>代码编写——>自测——>编译打包. 2.熟悉代码规范 从架构设计.组件抽象.模块 ...
- React +Redux+ Ant Design + echarts 项目实践
项目框架 采用React.js作为项目的框架 采用redux作为数据管理的框架 采用antd作为项目的UI组件 采用echarts完成项目中折线图的绘制 个人项目工作流程总结 拿到UI高保真图片之后先 ...
- python及pandas,numpy等知识点技巧点学习笔记
python和java,.net,php web平台交互最好使用web通信方式,不要使用Jypython,IronPython,这样的好处是能够保持程序模块化,解耦性好 python允许使用'''.. ...
- Sqlserver2014 迁移数据库
由于当初安装sqlserver 的时候选择默认安装的路径,导致现在c盘爆满,安装不了其它软件.因此想到了迁移数据库,网上搜索了一些简介,但是缺少一些步骤,导致数据库附加的时候失败.现总结如下: 1.将 ...
- The operation names in the portType match the method names in the SEI or Web service implementation class.
The Endpoint validation failed to validate due to the following errors: :: Invalid Endpoint Interfac ...
- [翻译] REMenu
REMenu https://github.com/romaonthego/REMenu Dropdown menu inspired by Vine. 一款下拉菜单效果控件,灵感来自于Vine. R ...
- Office 365实现单点登录系列(5)—配置单点登录
这是单点登录系列的最后一篇文章,前面4篇文章其实都是在为这篇文章的内容做准备,我把这四篇文章的链接放在下面,如果大家有需要,可以参考我以下的链接: Office 365实现单点登录系列(1)—域环境搭 ...
- EF CodeFirst下的自动迁移
当我们修改数据模型,添加一个如下字段 再次运行程序,会因为数据库结构与模型不一致而报错 为解决以上错误可以采取以下三种方式 1. 删除数据库,重新运行站点,会重新生成数据库,这样就会丢失数据 2. ...