原文: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入门扩展剖析的更多相关文章

  1. c#开发移动APP-Xamarin入门扩展

    原文:c#开发移动APP-Xamarin入门扩展 这节主要演示了如何通过添加第二个屏幕来跟踪应用程序的call历史来扩展Phoneword应用程序.最终如下: 按如下步骤扩展Phoneword 在Ph ...

  2. 如何开发Office平台上的扩展应用(又称为Office 2013 App,Office 2013 Add-Ins,Apps for Office,Office 应用)

    Office 扩展应用(Office Apps,Office 2013 AddIns,Apps for Office)开发 —— 中文文档 继 VBA 和 VSTO 之后, 微软为 Office 平台 ...

  3. 行内人解读开发一个App需要多少钱?

    对于很多互联网的创业者来说,评估前期的创业成本是很重要的.在这几年的创业大潮中,伴随着“互联网+”和“互联网思维”的普及,很多创业项目选择了开发app作为创业项目的载体.在我接触到的很多创业者,找Ap ...

  4. 开发一个 app 有多难?

    171 个回答 默认排序​ 道衍天机 有事情的加微信1293190838找我 1,150 人赞同了该回答 ----------------------------------------------- ...

  5. 跨平台移动APP开发进阶(二)HTML5+、mui开发移动app教程

    前端开发APP,从HBuilder开始~ 序 通过 HTML5 开发移动App 时,会发现HTML5 很多能力不具备.为弥补HTML5 能力的不足,在W3C 中国的指导下成立了www.HTML5Plu ...

  6. Selenium自动化测试,接口自动化测试开发,性能测试从入门到精通

    Selenium自动化测试,接口自动化测试开发,性能测试从入门到精通Selenium接口性能自动化测试基础部分:分层自动化思想Slenium介绍Selenium1.0/2.0/3.0Slenium R ...

  7. HBuilderX 5+APP MUI 入门

    这一套东西是用来开发app的,可以用html.js什么的写app然后给你打包就能安装到手机上,也可以轻易跨端(需要使用vue,然而我还没有熟练). HBuilder:一个敲代码的软件,敲前端代码超级方 ...

  8. Flask开发系列之快速入门

    Flask开发系列之快速入门 文档 一个最小的应用 调试模式 路由 变量规则 构造 URL HTTP 方法 静态文件 模板渲染 访问请求数据 环境局部变量 请求对象 文件上传 Cookies 重定向和 ...

  9. 【转载】用Ionic开发hybrid APP

    使用phonegap开发APP的优劣在此不必细说,快速,简单,跨平台,以及随着iOS,Android本身对webview优化所带来的不错的性能,便是其独有的优势.而且私以为在目前激烈而又变化快速的移动 ...

随机推荐

  1. 7、linux之定时器

    (1) 一个timer_list 结构体的实例对应一个定时器,其定义如下: struct timer_list { struct list_head entry, /*定时器列表*/ unsigned ...

  2. 26、驱动调试之根据oops信息和堆栈确定出错的代码

    a.驱动作为模块:1. 根据pc值确定该指令属于内核还是外加的模块pc=0xbf000018 它属于什么的地址?是内核还是通过insmod加载的驱动程序?先判断是否属于内核的地址: 看System.m ...

  3. angular组件间的信息传递

    原文 https://www.jianshu.com/p/82207f2249c1 大纲 1.父组件向子组件传递信息:通过属性 2.子组件向父组件传递信息:通过事件 3.父组件获取子组件的信息:通过调 ...

  4. bc-win32-power-echo-vim-not-work

    http://gnuwin32.sourceforge.net/packages.html linux ok, but win32 not ok [root@130-255-8-100 ~]# ech ...

  5. URL validation failed. The error could have been caused through the use of the browser&#39;s navigation

    URL validation failed. The error could have been caused through the use of the browser's navigation ...

  6. 积跬步,聚小流------java获取图片的尺寸

    在一篇文章中获取到通过例如以下两种方式进行获取: 1.使用ImageReader进行获取: 2.使用BufferedImage进行获取: 而且经过验证ImageReader进行操作的耗时远远低于Buf ...

  7. ios开发runtime学习三:动态添加方法(实际应用少,面试)

    #import "ViewController.h" #import "Person.h" /* 1: Runtime(动态添加方法):OC都是懒加载机制,只要 ...

  8. 【solr基础教程之九】客户端 分类: H4_SOLR/LUCENCE 2014-07-30 15:28 904人阅读 评论(0) 收藏

    一.Java Script 1.由于Solr本身可以返回Json格式的结果,而JavaScript对于处理Json数据具有天然的优势,因此使用JavaScript实现Solr客户端是一个很好的选择. ...

  9. php 根据给定的年份和月份获取该年份该月份的起始和结束时间

    function getShiJianChuo($nian=0,$yue=0){ if(empty($nian) || empty($yue)){ $now = time(); $nian = dat ...

  10. 【codeforces 754B】 Ilya and tic-tac-toe game

    time limit per test2 seconds memory limit per test256 megabytes inputstandard input outputstandard o ...