第二十五章:页面变化(六)

简介: 使用ItemTemplateTabbedPage还可用于呈现小数据集,每个数据集是由选项卡标识的单独页面。 您可以通过设置TabbedPage的ItemsSource属性并指定用于呈现每个页面的ItemTemplate来完成此操作。

使用ItemTemplate
TabbedPage还可用于呈现小数据集,每个数据集是由选项卡标识的单独页面。 您可以通过设置TabbedPage的ItemsSource属性并指定用于呈现每个页面的ItemTemplate来完成此操作。
MultiTabbedColors项目包含单个页面类,该类作为ContentPage添加到项目中,但随后被修改为TabbedPage。 该项目还引用了Xamarin.FormsBook.Toolkit库。
请注意,XAML文件的根元素将TabbedPage的ItemsSource属性设置为NamedColor.All静态属性中可用的集合。 该文件的其余部分定义ItemTemplate属性。 TabbedPage.ItemTemplate属性元素标记包含一对DataTemplate标记,其中显示以ContentPage开头的页面定义。 数据绑定引用ItemsSource集合中对象的属性,在本例中为NamedColor的属性:

<TabbedPage xmlns="http://xamarin.com/schemas/2014/forms"
            xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
            xmlns:toolkit=
                "clr-namespace:Xamarin.FormsBook.Toolkit;assembly=Xamarin.FormsBook.Toolkit"
            x:Class="MultiTabbedColors.MultiTabbedColorsPage"
            ItemsSource="{x:Static toolkit:NamedColor.All}">
    <TabbedPage.ItemTemplate>
        <DataTemplate>
            <ContentPage Title="{Binding Name}">
                <ContentPage.Padding>
                    <OnPlatform x:TypeArguments="Thickness"
                                iOS="0, 20, 0, 0" />
                </ContentPage.Padding>

                <StackLayout>
                    <Label Text="{Binding FriendlyName}"
                           Style="{DynamicResource TitleStyle}"
                           HorizontalTextAlignment="Center" />

                    <ScrollView VerticalOptions="FillAndExpand">
                        <StackLayout>
                            <BoxView Color="{Binding Color}"
                                     WidthRequest="144"
                                     HeightRequest="144"
                                     VerticalOptions="CenterAndExpand"
                                     HorizontalOptions="Center" />
                            <StackLayout VerticalOptions="CenterAndExpand"
                                         HorizontalOptions="Center">
                                <StackLayout.Resources>
                                    <ResourceDictionary>
                                        <Style TargetType="Label">
                                            <Setter Property="HorizontalTextAlignment"
                                                    Value="End" />
                                        </Style>
                                    </ResourceDictionary>
                                </StackLayout.Resources>
                                <Label Text="{Binding Color.R, 
                                                      StringFormat='Red = {0:F2}'}" />
                                <Label Text="{Binding Color.G, 
                                                      StringFormat='Green = {0:F2}'}" />
                                <Label Text="{Binding Color.B, 
                                                      StringFormat='Blue = {0:F2}'}" />
                                <Label Text="{Binding Color.A, 
                                                      StringFormat='Alpha = {0:F2}'}" />
                                <Label Text=" " />
                                <Label Text="{Binding Color.Hue, 
                                                      StringFormat='Hue = {0:F2}'}" />
                                <Label Text="{Binding Color.Saturation, 
                                                      StringFormat='Saturation = {0:F2}'}" />
                                <Label Text="{Binding Color.Luminosity, 
                                                      StringFormat='Luminosity = {0:F2}'}" />
                            </StackLayout>
                        </StackLayout>
                    </ScrollView>
                </StackLayout>
            </ContentPage>
        </DataTemplate>
    </TabbedPage.ItemTemplate>
</TabbedPage> 

要避免覆盖iOS屏幕顶部的状态栏,请在ContentPage模板上设置Padding,而不是在TabbedPage本身上设置。
将此ContentPage模板的Title属性设置为要在选项卡中显示的文本,以标识每个页面。 请注意,Title已绑定到NamedColor的Name属性,但页面的内容还包含带有TitleStyle的Label以显示FriendlyName属性,该属性类似于Name属性,但如果颜色名称由多个单词组成,则包含空格。
以下是在三个标准平台上运行的TabbedColors:
2019_05_10_090634
选项卡的功能类似于允许您选择特定页面的菜单。
好消息是,这在Android和Windows 10 Mobile上运行良好。 您可以快速滚动Android屏幕顶部的标题,然后在Windows 10 Mobile上滑动实际页面。
但是,在iOS上,只显示了四个项目,更多按钮和省略号不起作用。此外,没有图标,并且您需要TabbedPage上的图标才能批准Apple App Store的应用程序。 虽然TabbedPage的这种功能似乎是一种非常有趣的生成页面的方式,但它不适合跨平台应用程序。 更合适的是CarouselView,遗憾的是,到本书出版时还没有准备好。

目录
相关文章
|
2月前
|
前端开发
【前端web入门第五天】03 清除默认样式与外边距问题【附综合案例产品卡片与新闻列表】
本文档详细介绍了CSS中清除默认样式的方法,包括清除内外边距、列表项目符号等;探讨了外边距的合并与塌陷问题及其解决策略;讲解了行内元素垂直边距的处理技巧;并介绍了圆角与盒子阴影效果的实现方法。最后通过产品卡片和新闻列表两个综合案例,展示了所学知识的实际应用。
61 11
|
4月前
|
定位技术
高德局部刷新标记点,bug解决
将接口返回的经纬集合点在高德地图上标记展示, 如果实时刷新地图标记点,不加优化,则会造成过多的带宽消耗 所以,地图只需加载一次,局部更新标记点就好了。
|
6月前
|
Android开发
个人热点蓝条出现和消失时,页面下压和恢复导致页面混乱及蓝条下压页面底部控件看不到的问题
个人热点蓝条出现和消失时,页面下压和恢复导致页面混乱及蓝条下压页面底部控件看不到的问题
58 0
|
6月前
|
JSON 定位技术 API
HTML新特性【规划公交路线、规划步行路线、定位、自定义视角动画、账号和获取密钥、初始化、变更地图类型、添加控件、改变控件位置】(五)-全面详解(学习总结---从入门到深化)(下)
HTML新特性【规划公交路线、规划步行路线、定位、自定义视角动画、账号和获取密钥、初始化、变更地图类型、添加控件、改变控件位置】(五)-全面详解(学习总结---从入门到深化)
74 0
|
6月前
|
移动开发 JavaScript 前端开发
HTML新特性【规划公交路线、规划步行路线、定位、自定义视角动画、账号和获取密钥、初始化、变更地图类型、添加控件、改变控件位置】(五)-全面详解(学习总结---从入门到深化)(上)
HTML新特性【规划公交路线、规划步行路线、定位、自定义视角动画、账号和获取密钥、初始化、变更地图类型、添加控件、改变控件位置】(五)-全面详解(学习总结---从入门到深化)
106 0
|
存储 小程序 算法
【易售小程序项目】小程序首页完善(滑到底部数据翻页、回到顶端、基于回溯算法的两列数据高宽比平衡)【后端基于若依管理系统开发】
【易售小程序项目】小程序首页完善(滑到底部数据翻页、回到顶端、基于回溯算法的两列数据高宽比平衡)【后端基于若依管理系统开发】
98 0
|
存储 小程序 前端开发
【易售小程序项目】小程序私聊页面完善(带尾巴聊天气泡组件封装、滑至顶端获取历史聊天数据逻辑优化)【后端基于若依管理系统开发】
【易售小程序项目】小程序私聊页面完善(带尾巴聊天气泡组件封装、滑至顶端获取历史聊天数据逻辑优化)【后端基于若依管理系统开发】
64 0
|
JavaScript 前端开发
jquery 展开收缩改变状态 保姆式教学代码,默认第二项展开
jquery 展开收缩改变状态 保姆式教学代码,默认第二项展开
|
数据采集 监控 数据可视化
做出酷炫的动态统计图表,不一定要写代码
首先这个名字很长的,就是上面 GDP 图表的作者 Jannchie见齐 基于 D3.js 开发的 将历史数据排名转化为动态柱状图图表 的项目,并在 github 上开源了。
|
前端开发
前端工作总结128-一级控制二级菜单的变化
前端工作总结128-一级控制二级菜单的变化
104 0
前端工作总结128-一级控制二级菜单的变化
下一篇
无影云桌面