深入Xamarin.Forms多屏幕

简介: 在Xamarin.Forms多屏幕快速入门中,Phoneword应用程序被扩展到包含跟踪应用程序呼叫历史记录的第二个屏幕。 本文回顾了为了开发对Xamarin.Forms应用程序中的页面导航和数据绑定的理解而构建的内容。

Xamarin.Forms多屏幕快速入门中,Phoneword应用程序被扩展到包含跟踪应用程序呼叫历史记录的第二个屏幕。 本文回顾了为了开发对Xamarin.Forms应用程序中的页面导航和数据绑定的理解而构建的内容。

导航

Xamarin.Forms提供了一个内置的导航模型,可以管理一堆页面的导航和用户体验。 该模型实现了Page对象的先进先出(LIFO)堆栈。 要从一个页面移动到另一个页面,应用程序会将一个新页面推入此堆栈。 要返回上一页,应用程序将从堆栈中弹出当前页面。

Xamarin.Forms有一个NavigationPage类,用于管理Page对象的堆栈。 NavigationPage类还将在页面顶部添加一个导航栏,显示一个标题和一个平台相关的Back按钮,该按钮将返回上一页。 以下代码示例显示如何在应用程序的第一页周围包装NavigationPage:

点击(此处)折叠或打开

  1. public App ()
  2. {
  3.     ...
  4.     MainPage = new NavigationPage (new MainPage ());
  5. }


 

所有ContentPage实例都有一个Navigation属性,它暴露了修改页面堆栈的方法。 只有当应用程序包含NavigationPage时,才能调用这些方法。 要导航到CallHistoryPage,有必要调用PushAsync方法,如下面的代码示例所示:

点击(此处)折叠或打开

  1. async void OnCallHistory(object sender, EventArgs e)
  2. {
  3.     await Navigation.PushAsync (new CallHistoryPage ());
  4. }


 

这将导致新的CallHistoryPage对象被推送到导航堆栈。 要以编程方式返回到原始页面,CallHistoryPage对象必须调用PopAsync方法,如下面的代码示例所示:

 

点击(此处)折叠或打开

  1. await Navigation.PopAsync();

但是,在Phoneword应用程序中,此代码不是必需的,因为NavigationPage类会在页面顶部添加一个导航栏,其中包含一个平台适当的Back按钮,该按钮将返回到上一页。

数据绑定

数据绑定用于简化Xamarin.Forms应用程序显示和与其数据交互的方式。 它建立了用户界面和底层应用程序之间的连接。 BindableObject类包含许多支持数据绑定的基础架构。

数据绑定定义了两个对象之间的关系。 源对象将提供数据。 目标对象将消耗(并经常显示)来自源对象的数据。 在Phoneword应用程序中,绑定目标是显示电话号码的ListView控件,而PhoneNumbers集合是绑定源。

PhoneNumbers集合在App类中被声明和初始化,如下面的代码示例所示:

点击(此处)折叠或打开

  1. public partial class App : Application
  2. {
  3.    public static Liststring> PhoneNumbers { get; set; }

  4.    public App ()
  5.    {
  6.      PhoneNumbers = new Liststring>();
  7.      ...
  8.    }
  9.    ...
  10. }


 

ListView实例在CallHistoryPage类中被声明和初始化,如下面的代码示例所示:

点击(此处)折叠或打开

  1. ?xml version="1.0" encoding="UTF-8"?>
  2. ContentPage ...
  3.              xmlns:local="clr-namespace:Phoneword;assembly=Phoneword"
  4.              xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
  5.              ...>
  6.     ...
  7.     ContentPage.Content>
  8.        ...
  9.        ListView ItemsSource="{x:Static local:App.PhoneNumbers}" />
  10.        ...
  11.     /ContentPage.Content>
  12. /ContentPage>


 

在此示例中,ListView控件将显示ItemsSource属性绑定到的IEnumerable数据集合。 数据的收集可以是任何类型的对象,但默认情况下,ListView将使用每个项目的ToString方法来显示该项。 x:静态标记扩展用于指示ItemsSource属性将绑定到App类的静态PhoneNumbers属性,该属性可以位于本地命名空间中。

有关数据绑定的更多信息,请参阅数据绑定基础。 有关XAML标记扩展的更多信息,请参阅XAML标记扩展。

在Phoneword推出的其他概念

ListView负责在屏幕上显示项目集合。 ListView中的每个项目都包含在单个单元格中。 有关使用ListView控件的更多信息,请参阅ListView。

概要

本文介绍了在Xamarin.Forms应用程序中的页面导航和数据绑定,并展示了它们在多屏跨平台应用程序中的使用。

目录
相关文章
你好,Xamarin.Forms多屏幕
使用Xamarin.Forms处理导航 本指南扩展了在Hello,Xamarin.Forms指南中创建的Phoneword应用程序,以导航到第二个屏幕。 涵盖的主题包括页面导航和数据绑定到集合。
841 0
|
UED iOS开发
【Xamarin挖墙脚系列:IOS-关于手机支持的屏幕方向】
原文:【Xamarin挖墙脚系列:IOS-关于手机支持的屏幕方向】 设置支持的屏幕方向有两个级别,一个是app级别的,另一个是viewController级别的。   app 级别的可以在[target]-[general]-[device orientation]里面设置,   默认情况下Upside Down没有勾选,其他都勾选了。
893 0
|
开发工具 Android开发 iOS开发
使用xamarin开发Android、iOS报错failed to open directory: 系统找不到指定的文件
使用vs2019学习xamarin时,创建新程序。使用模拟器真机等测试都报错如下图错误: ![请在此添加图片描述](https://developer-private-1258344699.cos.ap-guangzhou.myqcloud.com/column/article/5877188/20231030-de8ce5fd.png?x-cos-security-token=r4KyZDEowPT0kGTL0LqE8EnwfN1Nzexadb05dcffed3939ff8d7591c528c01706nvpGSE93QwHpZM8NwhJNTZctNRQa0l3KDhEnqj8P7d8t
118 0
使用xamarin开发Android、iOS报错failed to open directory: 系统找不到指定的文件
|
Java C# Android开发
.NET(WinCE、WM)开发转Android开发 ——Xamarin和Smobiler对比
WinCE从1995年诞生至今,已有20多年的发展历史,行业成熟方案覆盖范围广,从车载、工控、手持机都有涉及,且方案成熟。 近些年,Android以后来居上的态势,逐渐渗透至各行业领域,硬件手持大厂也把产品线重心向Android手持迁移,基于Android的行业解决方案越来越成熟,WinCE的开发人才流失,在WinCE解决方案上吃老本的企业寻求转型。
|
Web App开发 测试技术 Android开发
xamarin开发android收集的一些工具
原文:xamarin开发android收集的一些工具 xamarin开发android收集的一些工具 工欲善其事,必先利其器,从16年下半年开始做xamarin相关的开发,平时使用的一些工具和google插件给大家分享一下,都有下载地址,持续更新。
1535 0
|
存储 数据库 Android开发
Xamarin android使用Sqlite做本地存储数据库
android使用Sqlite做本地存储非常常见(打个比方就像是浏览器要做本地存储使用LocalStorage,貌似不是很恰当,大概就是这个意思)。 SQLite 是一个软件库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。
1369 0
|
前端开发 Android开发
Xamarin android中使用signalr实现即时通讯
前面几天也写了一些signalr的例子,不过都是在Web端,今天我就来实践一下如何在xamarin android中使用signalr,刚好工作中也用到了这个,也算是总结一下学到的东西吧,希望能帮助你们,更快地熟悉使用xamarin android进行即时通讯。
1444 0
|
XML Android开发 数据格式
Xamarin android spinner的使用方法
xamarin  android spinner的如何使用呢,大多数web开发人员经常会听到DropDownList 和Combobox 这种下拉选择框,spinner 的意思差不多,有道词典一下意思是“下拉列表”、“台湾斯普”,“下拉列表组件”,“微调控件”。
1589 0
|
XML Java Android开发
Xamarin android如何反编译apk文件
Xamarin android 如何反编译 apk文件 这里推荐一款XamarinAndroid开发的小游戏,撸棍英雄,游戏很简单,的确的是有点大。等一下我们来翻翻译这个Xamarin Android 开发的小游戏 下载链接:http://shouji.
1380 0
|
定位技术 开发工具 Android开发
Xamarin android如何调用百度地图入门示例(一)
在Xamarin android如何调用百度地图呢? 首先我们要区分清楚,百度地图这是一个广泛的概念,很多刚刚接触这个名词”百度地图api”,的确是泛泛而谈,我们来看一下百度地图的官网: android上使用百度地图的有Android地图SDK,定位SDK,导航SDK,全景SDK.
1503 0

热门文章

最新文章

下一篇
无影云桌面