博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第十六章:数据绑定(一)
阅读量:6161 次
发布时间:2019-06-21

本文共 2023 字,大约阅读时间需要 6 分钟。

事件和事件处理程序是Xamarin.Forms交互式界面的重要组成部分,但事件处理程序通常执行非常基本的工作。它们在不同对象的属性之间传输值,在某些情况下只需更新Label以显示视图的新值。

您可以使用Xamarin.Forms的强大功能(称为数据绑定)自动化两个对象的属性之间的此类连接。在封面下,数据绑定安装事件处理程序并处理从一个属性到另一个属性的值传输,这样您就不必这样做。在大多数情况下你
在XAML文件中定义这些数据绑定,因此不涉及任何代码(或非常少的代码)。数据绑定的使用有助于减少应用程序中“移动部件”的数量。
数据绑定在Model-View-ViewModel(MVVM)应用程序体系结构中也起着至关重要的作用。正如您将在第18章“MVVM”中看到的那样,数据绑定提供了View(通常在XAML中实现的用户界面)与ViewModel和Model的底层数据之间的链接。这意味着用户界面和底层数据之间的连接可以在XAML中与用户界面一起表示。

绑定基础知识

数据绑定涉及多个属性,方法和类:

数据绑定涉及多个属性,方法和类:

  • Binding类(派生自BindingBase)定义了数据绑定的许多特征。
  • BindingContext属性由BindableObject类定义。
  • SetBinding方法也由BindableObject类定义。
  • BindableObjectExtensions类定义了SetBinding的另外两个重载。

两个类支持绑定的XAML标记扩展:

  • BindingExtension类是Xamarin.Forms专用的,它为用于在XAML中定义数据绑定的Binding标记扩展提供支持。
  • ReferenceExtension类对绑定也很重要。

两个接口也涉及数据绑定。 这些是:

  • INotifyPropertyChanged(在System.ComponentModel命名空间中定义)是类在通知外部类时属性已更改时使用的标准接口。此接口在MVVM中起主要作用。
  • IValueConverter(在Xamarin.Forms命名空间中定义)用于定义通过将值从一种类型转换为另一种类型来辅助数据绑定的小类。

数据绑定的最基本概念是:数据绑定始终具有源和目标。 源是对象的属性,通常是在运行时动态更改的对象。 当该属性更改时,数据绑定会自动更新目标,该目标是另一个对象的属性。

目标←来源
但正如您将看到的,有时源和目标之间的数据流不是一个恒定的方向。 然而,即使在这些情况下,由于一个基本事实,源和目标之间的区别很重要:
数据绑定的目标必须由BindableProperty对象支持。
如您所知,VisualElement类通过Element派生自BindableObject,Xamarin.Forms中的所有可视元素都将其大多数属性定义为可绑定属性。出于这个原因,数据绑定目标几乎总是视觉元素或 - 正如您将在第19章“集合视图”中看到的那样 - 被称为单元格的对象被转换为可视元素。
虽然数据绑定的目标必须由BindableProperty对象支持,但是对数据绑定源没有这样的要求。源可以是普通的旧C#属性。但是,在除了最简单的数据绑定之外的所有数据绑定中,源属性的更改会导致目标属性发生相应的更改。这意味着源对象必须实现某种通知机制,以便在属性更改时发出信号。此通知机制是INotifyPropertyChanged接口,它是一个涉及数据绑定的标准.NET接口,广泛用于实现MVVM体系结构。
因此,非平凡数据绑定源的规则 - 即可以动态更改值的数据绑定源 - 是:
非平凡数据绑定的源必须实现INotifyPropertyChanged。
尽管它很重要,但INotifyPropertyChanged接口具有非常简单的优点:它只包含一个名为PropertyChanged的事件,当一个属性发生变化时,类会触发该事件。
为方便起见,BindableObject实现了INotifyPropertyChanged。 当属性更改时,由可绑定属性支持的任何属性都会自动触发PropertyChanged事件。 事件的自动触发扩展到您可能在自己的类中定义的可绑定属性。
这意味着您可以在可视对象的属性之间定义数据绑定。 在宏观方案中,大多数数据绑定可能将可视对象与底层数据联系起来,但为了学习数据绑定和试验它们,在不定义数据类的情况下简单地链接两个视图的属性是很好的。
对于本章的前几个示例,您将看到数据绑定,其中source是Slider的Value属性,target是Label的Opacity属性。 当您操纵Slider时,Label会从透明变为不透明。 这两个属性都是double类型,范围从0到1,因此它们是完美的匹配。
您已经知道如何使用简单的事件处理程序完成这项小工作。 让我们看看如何使用数据绑定。

转载地址:http://mbrfa.baihongyu.com/

你可能感兴趣的文章
RecycleView设置顶部分割线(记录一个坑)
查看>>
汉字转拼音 (转)
查看>>
会计基础_001
查看>>
小程序: 查看正在写的页面
查看>>
Jenkins持续集成环境部署
查看>>
MWeb 1.4 新功能介绍二:静态博客功能增强
查看>>
预处理、const与sizeof相关面试题
查看>>
爬虫豆瓣top250项目-开发文档
查看>>
有趣的数学书籍
查看>>
teamviewer 卸载干净
查看>>
eclipse的maven、Scala环境搭建
查看>>
架构师之路(一)- 什么是软件架构
查看>>
USACO 土地购买
查看>>
【原创】远景能源面试--一面
查看>>
B1010.一元多项式求导(25)
查看>>
10、程序员和编译器之间的关系
查看>>
配置 RAILS FOR JRUBY1.7.4
查看>>
修改GRUB2背景图片
查看>>
Ajax异步
查看>>
好记性不如烂笔杆-android学习笔记<十六> switcher和gallery
查看>>