在 UWP 新的设计规范中,汉堡包菜单变成了官方推荐的导航方式,但是并没有提供相应的控件,需要使用 SplitView 来模拟。
SplitView 是分屏视图,把一个视图分割为两部分,Content 属性所表示的为主要视图,而 Pane 属性设置的视图则可以隐藏,可以折叠和展开。
添加 SplitView,并加入一些内容
1 2 3 4 5 6 7 8 9
| <SplitView> <SplitView.Pane> <StackPanel> <TextBlock FontSize="20">first</TextBlock> <TextBlock FontSize="20">second</TextBlock> <TextBlock FontSize="20">third</TextBlock> </StackPanel> </SplitView.Pane> </SplitView>
|
设置 SplitView 属性
设置名字,显示模式,调整打开时的宽度和关闭时的宽度,设置默认不打开
1
| <SplitView x:Name="mySplit" DisplayMode="CompactOverlay" CompactPaneLength="0" OpenPaneLength="150" IsPaneOpen="False">
|
具体关于 SplitView 的见解,可以参照:【Win 10 应用开发】SplitView 控件
添加汉堡包按钮极其属性
需要添加两个按钮,一个位于 SplitView 之外,用于开启 SplitView,另一个在 SplitView 之内,用于关闭 SplitView 需要注意,汉堡包的图案其实是一个矢量字符,在一种 Segoe 字体中,操作方式很简单,将字体设置为”Segoe MDL2 Assets” 即可,其中汉堡图标为 
,更多图标可以参考:http://modernicons.io/segoe-mdl2/cheatsheet/
1 2 3 4
| //开启按钮 <Button Click="Button_Click" FontFamily="Segoe MDL2 Assets" Content="" VerticalAlignment="Top" Width="50" Height="50" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"/> //关闭按钮 <Button Click="Button_Click" FontFamily="Segoe MDL2 Assets" Content="" VerticalAlignment="Top" Width="50" Height="50" />
|
两个按钮的 Click 事件绑定同样的操作 Button_Click,作用是打开或关闭 SplitView
1 2 3 4
| private void Button_Click(object sender, RoutedEventArgs e) { mySplit.IsPaneOpen = !mySplit.IsPaneOpen; }
|
最后做一些外观的微调,改变颜色
这里附上全部 XAML 代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| <Page x:Class="BirthClock.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:local="using:BirthClock" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"> <Button Click="Button_Click" FontFamily="Segoe MDL2 Assets" Content="" VerticalAlignment="Top" Width="50" Height="50" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}"/> <SplitView x:Name="mySplit" DisplayMode="CompactOverlay" CompactPaneLength="0" OpenPaneLength="150" IsPaneOpen="False"> <SplitView.Pane> <StackPanel Background="#FF9F9F9F"> <Button Background="#FF9F9F9F" FontFamily="Segoe MDL2 Assets" Content="" VerticalAlignment="Top" Width="50" Height="50" Click="Button_Click"/> <TextBlock FontSize="20">first</TextBlock> <TextBlock FontSize="20">second</TextBlock> <TextBlock FontSize="20">third</TextBlock> </StackPanel> </SplitView.Pane> <TextBlock HorizontalAlignment="Center" VerticalAlignment="Center" FontSize="100">Hello!</TextBlock> </SplitView> </Grid> </Page>
|
关于汉堡包菜单更具体的描述可以参考:Implementing an Awesome Hamburger Button with XAML’s new SplitView control in Windows 10