【Win10开发】关于汉堡菜单-SplitView的用法
SplitView(汉堡菜单)是win10新加的一种控件,顾名思义,其实就是将视图分割成两部分,废话不多说,下面来介绍一下SplitView的基本用法。
首先介绍几个SplitView经常用到的属性。(我直接搬MSDN的。。。
| IsPaneOpen | Read/write | Gets or sets a value that specifies whether the SplitView pane is expanded to its full width. |
| PaneBackground | Read/write | Gets or sets the Brush to apply to the background of the Pane area of the control. |
| CompactPaneLength | Read/write | Gets or sets the width of the SplitView pane in its compact display mode. |
| OpenPaneLength | Read/write | Gets or sets the width of the SplitView pane when it's fully expanded. |
| DisplayMode | Read/write | Gets of sets a value that specifies how the pane and content areas of a SplitView are shown. |
DisplayMode就是控制SplitView的展开样式,有4个值,Overlay,Inline,CompactOverlay,CompactInline。具体效果可以自行编写查看。此例中pc版设置为CompactOverlay,mobile版设置为Overlay
好的,介绍完毕,那么我们开始实战。首先看看demo运行的效果。


那么接下来我们先看代码布局,我们采用将汉堡Button单独放在SplitView外面。以下是汉堡Button的布局代码,这里说一下,汉堡图标的样式采用字体图标,字体为Segoe MDL2 Assets,更多图标请点此链接->http://modernicons.io/segoe-mdl2/cheatsheet/
<Grid.RowDefinitions>
<RowDefinition Height="Auto"></RowDefinition>
<RowDefinition Height="*"></RowDefinition>
</Grid.RowDefinitions>
<StackPanel Grid.Row="0" Height="40" Background="LightGray" Orientation="Horizontal">
<Button Background="Transparent" BorderThickness="0" VerticalAlignment="Top" Click="Menu_Click">
<Button.Content>
<TextBlock Text="" FontSize="30" FontFamily="Segoe MDL2 Assets" ></TextBlock>
</Button.Content>
</Button>
<TextBlock Margin="10" VerticalAlignment="Center" FontFamily="40" Text="SplitView Demo"></TextBlock>
</StackPanel>
接下来当然就是SplitView的代码了。Pane是可隐藏视图,里面采用的ListView控件,Content是主要视图。
<SplitView Grid.Row="1" x:Name="splitView" CompactPaneLength="48" OpenPaneLength="150"
IsPaneOpen="False" PaneBackground="LightGray" DisplayMode="CompactOverlay">
<SplitView.Pane>
<ListView x:Name="hambLv" IsItemClickEnabled="True" ItemClick="hambLv_ItemClick">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<SymbolIcon Symbol="{Binding Symbol}"/>
<TextBlock Margin="18" Text="{Binding Text}" />
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</SplitView.Pane>
<SplitView.Content>
<TextBlock x:Name="content" FontSize="30"></TextBlock>
</SplitView.Content>
</SplitView>
至此,前台代码完成。
后台代码首先是汉堡Button控制SplitView的展开与收起。
private void Menu_Click(object sender, RoutedEventArgs e)
{
splitView.IsPaneOpen = !splitView.IsPaneOpen;
}
我们定义一个HambList新类用以封装。
public class HambList
{
public string Text { get; set; }
public Symbol Symbol { get; set; }
}
然后在页面代码中生成ViewItem,并作为ListView的数据源。
ObservableCollection<HambList> hambList = new ObservableCollection<HambList>(); //这里注意要引入System.Collections.ObjectModel命名空间;
protected override void OnNavigatedTo(NavigationEventArgs e)
{
hambList.Clear();
hambList.Add(new HambList { Text = "People", Symbol = Symbol.People });
hambList.Add(new HambList { Text = "Phone", Symbol = Symbol.Phone });
hambList.Add(new HambList { Text = "Message", Symbol = Symbol.Message });
hambList.Add(new HambList { Text = "Mail", Symbol = Symbol.Mail });
base.OnNavigatedTo(e);
}
this.hambLv.ItemsSource = hambList; //将hambList集合绑定到ListView控件
接下来,我们将List每个项的Text属性显示到Content部分的TextBlock控件里。
private void hambLv_ItemClick(object sender, ItemClickEventArgs e)
{
content.Text = (e.ClickedItem as HambList).Text;
}
最后,我们判断一下用户设备,如果是mobile就把DisplayMode设置为Overlay。
ResourceContext resContext = ResourceContext.GetForCurrentView();
string value = resContext.QualifierValues["DeviceFamily"];
if (value == "Mobile")
{
splitView.DisplayMode = SplitViewDisplayMode.Overlay;
}
好了,本文介绍SplitView就此结束。
Demo下载链接:http://pan.baidu.com/s/1dDqHnvr
【Win10开发】关于汉堡菜单-SplitView的用法的更多相关文章
- Win10 UWP 开发系列:使用SplitView实现汉堡菜单及页面内导航
在Win10之前,WP平台的App主要有枢轴和全景两种导航模式,我个人更喜欢Pivot即枢轴模式,可以左右切换,非常方便.全景视图因为对设计要求比较高,自己总是做不出好的效果.对于一般的新闻阅读类Ap ...
- (UWP开发)在ListView中通过向右滑动展开汉堡菜单
首先在移动APP开发中,手势滑动已经成为一个必备的技能,无论大大小小的APP都需要拥有手势滑动功能.在Android和iOS操作系统的APP中,手势滑动比较普及.然而由于国内有关UWP应用的教程比较少 ...
- 张高兴的 UWP 开发笔记:汉堡菜单进阶
不同于Windows 8应用,Windows 10引入了"汉堡菜单"这一导航模式.说具体点,就拿官方的天气应用来说,左上角三条横杠的图标外加一个SplitView控件组成的这一导航 ...
- 张高兴的 Xamarin.Forms 开发笔记:为 Android 与 iOS 引入 UWP 风格的汉堡菜单 ( MasterDetailPage )
所谓 UWP 样式的汉堡菜单,我曾在"张高兴的 UWP 开发笔记:汉堡菜单进阶"里说过,也就是使用 Segoe MDL2 Assets 字体作为左侧 Icon,并且左侧使用填充颜色 ...
- WPF实现Win10汉堡菜单
WPF开发者QQ群: 340500857 | 微信群 -> 进入公众号主页 加入组织 前言 有小伙伴提出需要实现Win10汉堡菜单效果. 由于在WPF中没有现成的类似UWP的汉堡菜单,所以我们 ...
- 10分钟制作UWP汉堡菜单
什么是汉堡菜单? 汉堡菜单,指的是一个可以弹出和收回的侧边栏.在UWP和Android应用中,汉堡菜单都非常常见. 首先我们列出所有需要掌握的前置知识: 1,SplitView 2,StackPane ...
- 使用MvvmCross框架实现Xamarin.Forms的汉堡菜单布局
注:本文是英文写的,偷懒自动翻译过来了,原文地址:Implementing MasterDetail layout in Xamarin.Forms by MvvmCross 欢迎大家关注我的公众号: ...
- uwp汉堡菜单的实现
---恢复内容开始--- 现在uwp上面的汉堡菜单(就是那个三道杠,点击之后会出现菜单)使用的越来越普遍,比如微软自己家的Cortana.现在我使用的实现方法是使用SplitView实现.首先Spli ...
- iOS 开发多线程篇—GCD的常见用法
iOS开发多线程篇—GCD的常见用法 一.延迟执行 1.介绍 iOS常见的延时执行有2种方式 (1)调用NSObject的方法 [self performSelector:@selector(run) ...
随机推荐
- 由一篇文章引发的思考——多线程处理大数组
今天领导给我们发了一篇文章文章,让我们学习一下. 文章链接:TAM - Threaded Array Manipulator 这是codeproject上的一篇文章,花了一番时间阅读了一下.文章主要是 ...
- Ubuntu下安装 jdk6
Ubuntu下安装 jdk6 罗朝辉 (http://www.cnblogs.com/kesalin/) 本文遵循“署名-非商业用途-保持一致”创作公用协议 1,下载最新的 jdk6 版本,目前最 ...
- 如何为编程爱好者设计一款好玩的智能硬件(八)——LCD1602点阵字符型液晶显示模块驱动封装(中)
六.温湿度传感器DHT11驱动封装(下):如何为编程爱好者设计一款好玩的智能硬件(六)——初尝试·把温湿度给收集了(下)! 七.点阵字符型液晶显示模块LCD1602驱动封装(上):如何为编程爱好者设计 ...
- 可伸缩性最佳实践:来自eBay的经验
看到一篇关于系统可伸缩性(可扩展)的文章,eBay的架构师Randy Shoup写的,原文出处没找到,就不写转载的地址了.根据自己的理解对文章有修改剪切的地方. 在eBay,可伸缩性是我们每天奋力抵抗 ...
- Javascript模块化编程笔记
最近在读阮一峰的博客http://www.ruanyifeng.com/blog/2012/10/javascript_module.html,随手记录一些重要笔记. Javascript模块的雏形 ...
- MVVM架构~knockoutjs与MVC配合,实现列表的增删改功能
返回目录 MVC与MVVM的模型 在MVC实例项目中,为我们提供了简单的增删改查功能,而这种功能的实现与具体的Model很有关系,或者说它与后台数据库的关系过于紧密了,而对于开发人员来说当页面布局修改 ...
- Mybatis文档阅读笔记(明日继续更新...)
今天在编写mybatis的mapper.xml时,发现对sql的配置还不是很熟,有很多一坨一坨的东西,其实是可以抽取成服用的.不过良好的组织代码,还是更重要的.
- mybatis结合分页的使用及解析.
首先说明: 这里分页是使用了SSM框架+ jsp 来做的, 当然分页还有其他的很多做法, 比如easyUI自带的分页效果. 但是这些原理都是很相似的, 再次只做为学习总结之用. 一, 效果图这里的截图 ...
- 如何实现 Android 应用的持续部署?
构建一个高质量的 Android 应用 最大的挑战是什么? 在整个开发流程中,也许 Coding 时莫名的 bug,也许是 Android 开发兼容性问题,多版本多渠道自动打包问题,也有开发工具选择等 ...
- Design5:Sql server 文件组和文件
1,文件组和文件的作用 Sql Server的数据存储在文件中,文件是实际存储数据的物理实体,文件组是逻辑对象,Sql server通过文件组来管理文件. 一个DataBase有一个或多个FileGr ...