c#开发移动APP-Xamarin入门扩展剖析
上节将Phoneword应用程序扩展到包含第二个屏幕,该屏幕可以跟踪应用程序的拨打历史
Navigation
Xamarin.Form提供了一个内置的导航模型,用于管理一堆页面的导航和用户体验,这个模型实现了Page对象的后进先出(LIFO)堆栈,要从一个页面移动到另一个页面,应用程序将把一个新页面推到这个堆栈上,要返回到前一个页面,应用程序将从堆栈中弹出当前页面。
Xamarin.Forms有一个NavigationPage类,用于管理Page对象的堆栈,NavigationPage类还将在页面顶部添加一个导航栏,该栏将显示标题和与平台相匹配返回到前一个页面回退按钮,下面的代码示例展示了如何用NavigationPage包裹应用程序的第一个页面。
public App ()
{
...
MainPage = new NavigationPage (new MainPage ());
}
所有ContentPage实例都有一个Navigation属性,该属性公开了修改页面堆栈的方法。只有当应用程序包含NavigationPage时,才能调用这些方法。要导航到CallHistoryPage,需要调用PushAsync方法,如下面的代码示例所示:
async void OnCallHistory(object sender, EventArgs e)
{
await Navigation.PushAsync (new CallHistoryPage ());
}
这将导致新的CallHistoryPage对象被推送到导航堆栈上。要以编程方式返回到原始页面,CallHistoryPage对象必须调用PopAsync方法,如下面的代码示例所示:
await Navigation.PopAsync();//弹出当前页
Data Binding
数据绑定用于简化Xamarin.Form应用程序显示及与数据交互。它在用户界面和底层应用程序之间建立了连接。BindableObject类包含了很多支持数据绑定的基础设施。数据绑定定义了两个对象之间的关系。源对象将提供数据。目标对象将使用(经常显示)来自源对象的数据。在Phoneword应用程序中,绑定目标是显示电话号码的ListView控件,而PhoneNumbers集合是绑定源。
PhoneNumbers集合是在App类中声明和初始化的,
public partial class App : Application
{
public static List<string> PhoneNumbers { get; set; } public App ()
{
PhoneNumbers = new List<string>();
...
}
...
}
ListView实例在CallHistoryPage类中声明并初始化,
<?xml version="1.0" encoding="UTF-8"?>
<ContentPage ...
xmlns:local="clr-namespace:Phoneword;assembly=Phoneword"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
...>
...
<ContentPage.Content>
...
<ListView ItemsSource="{x:Static local:App.PhoneNumbers}" />
...
</ContentPage.Content>
</ContentPage>
在本例中,ListView控件将显示ItemsSource属性绑定的IEnumerable数据集合。集合可以是任何类型的对象,但默认情况下,ListView将使用每个项的ToString方法来显示该项。x:Static静态标记扩展用于指示ItemsSource属性将绑定到App类的静态PhoneNumbers属性,该属性可以在local命名空间中找到
c#开发移动APP-Xamarin入门扩展剖析的更多相关文章
- c#开发移动APP-Xamarin入门扩展
原文:c#开发移动APP-Xamarin入门扩展 这节主要演示了如何通过添加第二个屏幕来跟踪应用程序的call历史来扩展Phoneword应用程序.最终如下: 按如下步骤扩展Phoneword 在Ph ...
- 如何开发Office平台上的扩展应用(又称为Office 2013 App,Office 2013 Add-Ins,Apps for Office,Office 应用)
Office 扩展应用(Office Apps,Office 2013 AddIns,Apps for Office)开发 —— 中文文档 继 VBA 和 VSTO 之后, 微软为 Office 平台 ...
- 行内人解读开发一个App需要多少钱?
对于很多互联网的创业者来说,评估前期的创业成本是很重要的.在这几年的创业大潮中,伴随着“互联网+”和“互联网思维”的普及,很多创业项目选择了开发app作为创业项目的载体.在我接触到的很多创业者,找Ap ...
- 开发一个 app 有多难?
171 个回答 默认排序 道衍天机 有事情的加微信1293190838找我 1,150 人赞同了该回答 ----------------------------------------------- ...
- 跨平台移动APP开发进阶(二)HTML5+、mui开发移动app教程
前端开发APP,从HBuilder开始~ 序 通过 HTML5 开发移动App 时,会发现HTML5 很多能力不具备.为弥补HTML5 能力的不足,在W3C 中国的指导下成立了www.HTML5Plu ...
- Selenium自动化测试,接口自动化测试开发,性能测试从入门到精通
Selenium自动化测试,接口自动化测试开发,性能测试从入门到精通Selenium接口性能自动化测试基础部分:分层自动化思想Slenium介绍Selenium1.0/2.0/3.0Slenium R ...
- HBuilderX 5+APP MUI 入门
这一套东西是用来开发app的,可以用html.js什么的写app然后给你打包就能安装到手机上,也可以轻易跨端(需要使用vue,然而我还没有熟练). HBuilder:一个敲代码的软件,敲前端代码超级方 ...
- Flask开发系列之快速入门
Flask开发系列之快速入门 文档 一个最小的应用 调试模式 路由 变量规则 构造 URL HTTP 方法 静态文件 模板渲染 访问请求数据 环境局部变量 请求对象 文件上传 Cookies 重定向和 ...
- 【转载】用Ionic开发hybrid APP
使用phonegap开发APP的优劣在此不必细说,快速,简单,跨平台,以及随着iOS,Android本身对webview优化所带来的不错的性能,便是其独有的优势.而且私以为在目前激烈而又变化快速的移动 ...
随机推荐
- css盒子模型的宽度问题
最近看css权威指南的时候,发现一个之前特别不清楚的概念——宽度. 每个块级元素都有一个元素框,元素框内包括了元素内容,元素内边距,元素边框,元素外边距. 所以元素框的宽度=元素内容宽度+元素内边距+ ...
- POJ 3086 Triangular Sums (ZOJ 2773)
http://poj.org/problem?id=3086 http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemId=1773 让你计算两 ...
- POJ 3624 Charm Bracelet 0-1背包
传送门:http://poj.org/problem?id=3624 题目大意:XXX去珠宝店,她需要N件首饰,能带的首饰总重量不超过M,要求不超过M的情况下,使首饰的魔力值(D)最大. 0-1背包入 ...
- 【u243】拓扑排序
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 一些历史迷们打算把历史上的一些大事件按时间顺序列出来.但是,由于资料不全,每个事件发生的具体时间都没有 ...
- stm32的dac
- mysql 查询字段名所在的表
select * from (select * from information_schema.COLUMNS where table_schema = '数据库名') temp where colu ...
- https://sourceware.org/gdb/onlinedocs/gdb/Forks.html
https://sourceware.org/gdb/onlinedocs/gdb/Forks.html Next: Checkpoint/Restart, Previous: Threads, Up ...
- 判断文件是否存在的另一种方法 _access 和 _waccess
函数原型: int _access( const char *path, int mode ); int _waccess( const wchar_t *path, int mode ); 示例代码 ...
- Android JNI -基础篇
JNI(Java Native Interface,JAVA本地接口) 可以使Java代码和其他语言写的代码(如C/C++代码)进行交互.为什么要进行交互? 首先,Java语言提供的类库无法满足要求, ...
- 【u025】贝茜的晨练计划
Time Limit: 1 second Memory Limit: 128 MB [问题描述] 奶牛们打算通过锻炼来培养自己的运动细胞,作为其中的一员,贝茜选择的运动方式是每天进行N(1 <= ...