Xamarin.Froms 第18局:控件模板

总目录


前言

本文介绍控件模板:
一、控件模板
二、模板绑定

环境

1.Visual Studio 2017
2.Xamarin.Froms 4.0.0.62955-pre2
3.Android 4.4(API 19)或更高版本
4.约定:XF代表Xamarin.Forms

内容

一、控件模板

控件模板:控件模板将页面与内容分离,使用它很容易实现主题设计。

下面简单实现日间/夜间主题切换。

实现效果
Xamarin.Froms 第18局:控件模板_第1张图片
Xamarin.Froms 第18局:控件模板_第2张图片
实现方式
Xamarin.Froms 第18局:控件模板_第3张图片

在ControlTemplate中定义布局,以及布局内包含的控件,使用ContentPresenter作为自定义内容的占位符,即:自定义显示内容的显示位置;

Xamarin.Froms 第18局:控件模板_第4张图片

1.在带有ControlTemplate属性的控件或页面上应用ControlTemplate。

2.带有ControlTemplate属性的控件或页面:

  • ContentPage:内容页面;
  • ContentView:内容视图;
  • TemplatedPage:ContentPage的基类,没有Content属性,所以只能通过控件模板添加内容;
  • TemplatedView:ContentView的基类,没有Content属性,所以只能通过控件模板添加内容;
Xamarin.Froms 第18局:控件模板_第5张图片

二、模板绑定

模板绑定:模板绑定(TemplateBinding)可以让控件模板中的控件将数据绑定到公共属性,使之动态变化。

上述控件模板中的标题,写死在了控件模板中,下面通过模板绑定,使其绑定到其它属性,使之可以灵活修改。

实现效果
Xamarin.Froms 第18局:控件模板_第6张图片
实现方式(主要代码)
Xamarin.Froms 第18局:控件模板_第7张图片
Xamarin.Froms 第18局:控件模板_第8张图片

新建MainPageViewModel类,并将MainPage的BindingContext绑定到它的实例。

Xamarin.Froms 第18局:控件模板_第9张图片

1.使用TemplateBinding绑定到Title属性。

2.TemplateBinding类似于Binding,区别在于:TemplateBinding的源为控件模板所属的控件或页面。例如:本例中TemplateBinding的源为ContentView,而ContentView的Parent为ContentPage,所以模板绑定到Parent.BindingContext.Title,即:ContentPage的BindingContext的Title。

3.TemplateBinding只能在ControlTemplate中使用。

后语

下篇介绍数据模板,待续...


总目录

你可能感兴趣的:(Xamarin.Froms 第18局:控件模板)