Xamarin.Forms 自定义布局介绍

Xamarin.Forms
Xamarin.Forms 自定义布局介绍

Xamarin.Forms中提供了StackLayout、AbsoluteLayout、RelativeLayout、Grid四个布局类,借助这四个类可以方便的管理程序的布局。当现有布局类不能满足我们的功能时,可以通过自定义布局实现想要的效果。 在讲解布局时提到过StackLayout等继承Layout类,可以管理多个子视图。如果继承Layout类,只能管理单一子视图,如ContentView、Frame、ScrollView等。

Xamarin.Forms Custom Renderer介绍

Xamarin.Forms
Xamarin.Forms Custom Renderer介绍

Xamarin.Forms 开发过程中需要平台特殊定制时可以同过Custom Renderer实现。定义自己的Custom Renderer应继承ViewRenderer类,ViewRenderer是一个泛型类。ViewRenderer单独定义在不同平台中,Android平台在Xamarin.Forms.Platform.Android下,iOS平台在Xamarin.Forms.Platform.iOS下。ViewRenderer包含的两个范型参数TViewTNativeView(UWP下为TElement和TNativeElement),TView对应的是Xamarin.Forms中定义的视图元素,TNativeView则对应的是平台中定义的视图元素。

Xamarin.Forms Platform-Specific API

Xamarin.Forms
Xamarin.Forms Platform-Specific API

Xamarin.Forms 并不能支持每个平台的所用功能,如声音、视频播放和文件读写等功能需要我们单独为每个平台编码,也可以添加第三方组件扩展实现我们需要的功能,第三方组件可以在 https://components.xamarin.com 搜索或者通过Github搜索,本文主要记录编码调用平台特有API。代码实现又分Use Portable Class Library(PCL)和Use Shared Library(SAP)两种方式。Use Portable Class Library以可移植库方式创建项目所有代码会编译成一个独立的DLL,Use Shared Library方式创建项目是一个共享项目,项目中的代码会被每个平台共享使用。

Xamarin.Forms Page介绍

Xamarin.Forms
Xamarin.Forms Page介绍

Forms中的Page表示App中的一个页面。作用类似Android中的Activity,用来呈现一个用户界面,通常不会直接使用Page类,更多是使用Page的子类,最常用的就是ContentPage.

Xamarin.Forms Navigation介绍

Xamarin.Forms
Xamarin.Forms Navigation介绍

一个常规的App是由多个Page组成的,出现多个Page就会涉及页面跳转问题。Xamarin.Forms页面之间的跳转通过Navigation Stack管理Page,如页面A跳转到页面B时,会将B压入栈定,此时页面B成为活动页面,执行Back操作时,页面B从栈定推出使页面A重新变为活动页面。
每个应用程序都有一个特殊页作为应用程序的入口(main page, or the home page, or the start page),Xamarin.Forms中由App的MainPage属性设置。

Xamarin.Forms MVVM介绍

Xamarin.Forms
Xamarin.Forms MVVM介绍

MVVM是Model-View-ViewModel的简写,是由微软在WPF中提供的新技术,MVVM 架构使用的是数据绑定基础架构。更多介绍:http://baike.baidu.com/view/3507915.htm

MVVM架构分为三层:
• Model负责访问数据,为ViewModel提供数据。
• ViewModel连接Model层和View层. ViewModel帮助管理Model提供的数据.
• View层表现数据,通常为XAML定义的用户界面.

Xamarin.Forms Data Binding介绍

Xamarin.Forms
Xamarin.Forms Data Binding介绍

很多时候我们需要将某个View1 值的改变显示在另外一个View2 上,对View1的对应事件编码可实现我们想要的效果,如果只是想处理值的改变,可以通过连接两个View的对应属性即可,称为Data Binding。Data Binding在Model-View-ViewModel (MVVM)设计模式中起着重要作用。
Data Binding中设计两个概念SourceTarget。当Source的值发生改变时Data Binding会自动将这个新的值更新到Target。对Target和Source有特殊要求,Target必须继承BindableProperty类(VisualElement通过继承Element继承了BindableObject,所以Xamarin.Forms中视图的大部分属性都是BindableProperty类型),Source必须实现INotifyPropertyChanged接口提供一种通知机制监听Source值的改变(BindableObject实现了INotifyPropertyChanged接口)。

×
  • {title}