最新要闻

广告

手机

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案

票房这么火爆,如何请视障人士“看”一场电影?

票房这么火爆,如何请视障人士“看”一场电影?

家电

焦点播报:MAUI新生3.4-深入理解XAML:数据模板DataTemplate

来源:博客园


(资料图片仅供参考)

数据模板主要作用是定义集合类控件的数据显示外观,和前面几个章节自定义控件的关系不大。数据模板本质上是定义集合的每一个迭代对象的UI,和Vue的v-for或Blazor的foreach类似。数据模板可以直接在控件内部定义(内联数据模板),也可以定义在控件级、页面级或应用级的资源字典中。

一、内联 数据模板的定义和使用

                                                                                                                                                                                                                                                                        

二、资源字典 数据模板的定义和使用

                                                                                                                                                                                                                                                

三、控件模板也可以作为数据模板使用

                        ......                                         

四、使用DataTemplateSelector(数据模板选择器),根据条件更改Item行样式。类似于在Vue或Blazor的循环中使用的if,但XAML使用for或者if会麻烦非常多,这也是XAML被诟病的地方。以下直接扒文档案例。

1、第一步,定义数据模板选择器类,派生自DataTemplateSelector

public class PersonDataTemplateSelector : DataTemplateSelector{    //定义两个数据模板属性    public DataTemplate ValidTemplate { get; set; }    public DataTemplate InvalidTemplate { get; set; }    //参数item为集合控件的迭代对象,参数container为集合控件对象    protected override DataTemplate OnSelectTemplate(object item, BindableObject container)    {        //返回值为数据模板        //根据出生日期,使用不同的数据模板        return ((Person)item).DateOfBirth.Year >= 1980 ? ValidTemplate : InvalidTemplate;    }}

2、第二步,在资源字典中定义数据模板和数据模板选择器

                ...                    ...            

3、第三步,使用数据模板选择器

关键词: 直接设置 自定义控件