Xamarin.Forms 多屏显示深度解析

在 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 应用程序中的页面导航和数据绑定,并演示了如何在多屏幕跨平台应用程序中使用它们。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值