Pivot的Header花式效果

要实现如上图所示的效果分为三步:

1.重写Pivot样式,去掉Pivot的Header或者是直接使用默认的Pivot的样式然后不写Header

2.使用一个ListView或者是横向的StackPanel或者是横向的Grid加上一个Button代替Header的效果(我使用的是Grid,建议使用ListView)

3.在Pivot的SelelctionChanged事件中以及当做Header的Button的Click事件做一个同步

首先Pivot的Item你想放什么就放什么

然后就是代替Header的问题:我用的Grid套了5个Button

 1 <Grid Grid.Row="0" x:Name="TopBar" Background="#FDF187">
 2             <Grid.ColumnDefinitions>
 3                 <ColumnDefinition Width="*"/>
 4                 <ColumnDefinition Width="*"/>
 5                 <ColumnDefinition Width="2*"/>
 6                 <ColumnDefinition Width="2*"/>
 7                 <ColumnDefinition Width="*"/>
 8             </Grid.ColumnDefinitions>
 9             <Button x:Name="Header0" Style="{StaticResource GrayLightButton}"
10                     Background="Transparent" Grid.Column="0" Content="设置" FontFamily="Segoe MDL2 Assets,Segoe UI"
11                     FontSize="15" HorizontalAlignment="Center" VerticalAlignment="Center" Click="Header0_Click"/>
12             <Button x:Name="Header1" Style="{StaticResource GrayLightButton}"
13                     Background="Transparent" Grid.Column="1" Content="鸣谢" FontFamily="Segoe MDL2 Assets,Segoe UI"
14                     FontSize="15" HorizontalAlignment="Center" VerticalAlignment="Center" Click="Header1_Click"/>
15             <Button x:Name="Header2" Style="{StaticResource GrayLightButton}"
16                     Background="Transparent" Grid.Column="2" Content="开源与引用" FontFamily="Segoe MDL2 Assets,Segoe UI"
17                     FontSize="15" HorizontalAlignment="Center" VerticalAlignment="Center" Click="Header2_Click"/>
18             <Button x:Name="Header3" Style="{StaticResource GrayLightButton}"
19                     Background="Transparent" Grid.Column="3" Content="更新记录" FontFamily="Segoe MDL2 Assets,Segoe UI"
20                     FontSize="15" HorizontalAlignment="Center" VerticalAlignment="Center" Click="Header3_Click"/>
21             <Button x:Name="Header4" Style="{StaticResource GrayLightButton}"
22                     Background="Transparent" Grid.Column="4" Content="关于" FontFamily="Segoe MDL2 Assets,Segoe UI"
23                     FontSize="15" HorizontalAlignment="Center" VerticalAlignment="Center" Click="Header4_Click"/>
24         </Grid>

最后就是在后台代码中实现PivotItem与Grid的同步:

Pivot的SelelctionChanged事件实现Button的文字和颜色切换

 1 private void Pivot_SelectionChanged(object sender, SelectionChangedEventArgs e)
 2         {
 3             Header0.Content = "设置";
 4             Header0.FontSize = 15;
 5             Header0.Foreground = new SolidColorBrush(Color.FromArgb(225, 128, 128, 128));
 6             Header1.Content = "鸣谢";
 7             Header1.FontSize = 15;
 8             Header1.Foreground = new SolidColorBrush(Color.FromArgb(225, 128, 128, 128));
 9             Header2.Content = "开源与引用";
10             Header2.FontSize = 15;
11             Header2.Foreground = new SolidColorBrush(Color.FromArgb(225, 128, 128, 128));
12             Header3.Content = "更新记录";
13             Header3.FontSize = 15;
14             Header3.Foreground = new SolidColorBrush(Color.FromArgb(225, 128, 128, 128));
15             Header4.Content = "关于";
16             Header4.FontSize = 15;
17             Header4.Foreground = new SolidColorBrush(Color.FromArgb(225, 128, 128, 128));
18             switch (pivot.SelectedIndex)
19             {
20                 case 0:
21                     Header0.Content = "";//Segoe MDL2 Assets图标
22                     Header0.FontSize = 25;
23                     Header0.Foreground = new SolidColorBrush(Color.FromArgb(225, 0, 122, 204));
24                     break;
25                 case 1:
26                     Header1.Content = "";//Segoe MDL2 Assets图标
27                     Header1.FontSize = 25;
28                     Header1.Foreground = new SolidColorBrush(Color.FromArgb(225, 0, 122, 204));
29                     break;
30                 case 2:
31                     Header2.Content = "";//Segoe MDL2 Assets图标
32                     Header2.FontSize = 25;
33                     Header2.Foreground = new SolidColorBrush(Color.FromArgb(225, 0, 122, 204));
34                     break;
35                 case 3:
36                     Header3.Content = "";//Segoe MDL2 Assets图标
37                     Header3.FontSize = 25;
38                     Header3.Foreground = new SolidColorBrush(Color.FromArgb(225, 0, 122, 204));
39                     break;
40                 case 4:
41                     Header4.Content = "?";//Segoe MDL2 Assets图标
42                     Header4.FontSize = 25;
43                     Header4.Foreground = new SolidColorBrush(Color.FromArgb(225, 0, 122, 204));
44                     break;
45             }
46         }

然后就是点击Button实现PivotItem的切换

以第一个Button举个栗子,以此类推

1         private void Header0_Click(object sender, RoutedEventArgs e)
2         {
3             pivot.SelectedIndex = 0;
4             pivot.SelectedItem = pivot.Items[0];
5         }

就这样就可以实现如上效果了。

还可以做一个扩展:在Grid中Button下面加一扁扁的矩形,然后后台代码处理矩形的隐藏和出现,可以实现更加好看的效果。

抛砖引玉,如有更炫酷的方法请联系我~

时间: 2024-08-24 03:00:36

Pivot的Header花式效果的相关文章

Windows Phone开发中,减小(改变)Pivot控件PivotItem的Header(标题)字号

Pivot,枢轴控件在WP中很常见,比如QQ.自带的照片(WP8.1中)使用的就是这种控件和布局,Pivot中可以包含若干个PivotItem(枢轴项),每个PivotItem可以理解为一个子页面,PivotItem中有Header属性,用来设置PivotItem的标题. 但是,这个Header默认居然不能设置字号!默认的个人认为太大,占据屏幕空间太多,至少在本人之前写的一个应用中需要缩小Header的字号. 百度.谷歌了一大圈,纠结几天时间,终于找到一种改变Header字号的方法. 首先看xa

Panorama和Pivot控件

Windows Phone提供了Panorama和Pivot这两种控件供用户横向切换导航的方式来显示具有内容比较相关的页面.本文主要对这两个控件进行描述,包括如何使用,以及一些最佳实践. 其中包括如下部分: Panorama控件 Pivot控件 如何在二者之间选择 在项目中填加它们 Panorama控件示例 Pivot控件示例 最佳实践 Panorama控件 Panorama控件用来在一个很长的横向面板上显示相关的内容,屏幕之外的内容可以依次切入到屏幕中,可以通过左右滑动的方式来切换它们.当看到

背水一战 Windows 10 (49) - 控件(集合类): Pivot, Hub

[源码下载] 作者:webabcd 介绍背水一战 Windows 10 之 控件(集合类) Pivot Hub 示例1.Pivot 的示例Controls/CollectionControl/PivotDemo.xaml <Page x:Class="Windows10.Controls.CollectionControl.PivotDemo" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentatio

UITableView section header 不固定

iOS系统自带的UITableView,当数据分为多个section的时候,在UITableView滑动的过程中,默认section header是固定在顶部的,滑动到下一个section的时候,下一个section header把上一个section header顶出屏幕外.典型的应用就是通讯录. 默认情况下,UITableView的section header是固定的,如何让section header不固定呢?也就是随着UITableView的滑动而滑动,顶部不是一直都显示section

WP8.1开发:简单的天气预报应用

今天小梦给大家分享一个简单的天气预报应用源码:调用的是百度API.整个应用都没有什么难点.只是一个简单的网络请求和json数据处理.在WP8.1有小娜的情况下,天气预报应用还有意义吗?我认为还是有点意义的,至少数据更详细,而要想要用户喜欢,必须有比小娜更人性化的提醒和精美的UI.UI必须要精美.当然小梦今天分享的UI很简单.大家可以根据自己的想象去处理UI.之所以分享出来,是分享JSON的数据处理.在WP8.1开发XML读取中央气象城市代码文件中,分享了XML文件和JSON数据解析的方法,不过其

WP8.1开发:简单天气预报应用(转)

今天小梦给大家分享一个简单的天气预报应用源码:调用的是百度API.整个应用都没有什么难点.只是一个简单的网络请求和json数据处理.在WP8.1有小娜的情况下,天气预报应用还有意义吗?我认为还是有点意义的,至少数据更详细,而要想要用户喜欢,必须有比小娜更人性化的提醒和精美的UI.UI必须要精美.当然小梦今天分享的UI很简单.大家可以根据自己的想象去处理UI.之所以分享出来,是分享JSON的数据处理.在WP8.1开发XML读取中央气象城市代码文件中,分享了XML文件和JSON数据解析的方法,不过其

UWP:可滚动的PivotHeader

原文:UWP:可滚动的PivotHeader UWP开发里,Pivot真是个令人又爱又恨的控件.为了实现某些可滚动Header的效果,有些大佬甚至去掉了原本的Header,使用一个ListView或者ListBox自己画Header,不过这样会让控件变得很复杂. 既然Pivot是一个模板化控件,那么应该有方法直接让Header可以滚动. 先贴效果图: 先自定义Pivot的Style,从generic.xaml找(位置应该在C:\Program Files (x86)\Windows Kits\1

UWP中使用Composition API实现吸顶(2)

原文:UWP中使用Composition API实现吸顶(2) 在上一篇中我们讨论了不涉及Pivot的吸顶操作,但是一般来说,吸顶的部分都是Pivot的Header,所以在此我们将讨论关于Pivot多个Item关联同一个Header的情况. 老样子,先做一个简单的页面,页面有一个Grid当Header,一个去掉了头部的Pivot,Pivot内有三个ListView,ListView设置了和页面Header高度一致的空白Header. <Page x:Class="TestListViewH

自己总结的 iOS ,Mac 开源项目以及库,知识点------持续更新

自己在 git  上看到一个非常好的总结的东西,但是呢, fork  了几次,就是 fork  不到我的 git 上,干脆复制进去,但是,也是认真去每一个每一个去认真看了,并且也是补充了一些,感觉非常棒,所以好东西要分享,为啥用 CN 博客,有个好处,可以随时修改,可以持续更新,不用每次都要再发表,感觉这样棒棒的 我们 自己总结的iOS.mac开源项目及库,持续更新.... github排名 https://github.com/trending,github搜索:https://github.