Xamarin.Forms 多屏显示深度解析

来源:互联网 发布:海文网络计划软件教程 编辑:程序博客网 时间:2024/05/17 16:02

在 Xamarin.Forms 多屏显示快速入门中,Phoneword 应用程序扩展到包括第二个屏幕,它可跟踪应用程序的调用历史记录。 本文介绍为了深入了解 Xamarin.Forms 应用程序中的页面导航和数据绑定而生成的内容。

导航

Xamarin.Forms 提供了内置导航模型,用于管理页面堆栈的导航和用户体验。 此模型实现了 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();

但是,在 Phoneword 应用程序中无需此代码,因为 NavigationPage 类将导航栏添加到页面顶部,此页面包括平台相应的“返回”按钮,通过此按钮可返回上一页。

数据绑定

数据绑定用于简化 Xamarin.Forms 应用程序显示及其与数据的交互方式。 它将在用户界面和基础应用程序之间建立连接。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 类(可在 local 命名空间中找到)的静态 PhoneNumbers 属性。

若要深入了解数据绑定,请参阅数据绑定基本知识。 若要深入了解 XAML 标记扩展,请参阅 XAML 标记扩展。

Phoneword 中引入的其他概念

ListView 负责在屏幕上显示项的集合。 单个单元格中包含 ListView 中的每个项。 若要深入了解如何使用 ListView 控件,请参阅 ListView。

摘要

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

原创粉丝点击