UWP汉堡菜单

在UWP中引入了汉堡菜单,我们先看下效果图

汉堡菜单

菜单项

    public class MenuItem
    {
        public Symbol Icon { get; set; }
        public string Text { get; set; }
    }

XAML

<Page.Resources>
        <ResourceDictionary>
            <DataTemplate x:Key="MenuItemDataTemplate">
                <StackPanel Orientation="Horizontal">
                    <SymbolIcon Symbol="{Binding Icon}" />
                    <TextBlock Text="{Binding Text}" Margin="18" />
                </StackPanel>
            </DataTemplate>
        </ResourceDictionary>
    </Page.Resources>
    <Grid x:Name="rootGrid" Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
        <SplitView x:Name="mainSplitView" OpenPaneLength="150" CompactPaneLength="45" PaneBackground="LightGray" DisplayMode="CompactOverlay">
            <SplitView.Pane>
                <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="auto" />
                        <RowDefinition Height="*" />
                    </Grid.RowDefinitions>
                    <StackPanel Orientation="Horizontal">
                        <Button x:Name="hanburgButton" FontFamily="Segoe MDL2 Assets" Content="" FontSize="24" Click="hanburgButton_Click" />
                        <TextBlock Margin="10,0,0,0" VerticalAlignment="Center" FontSize="18" Text="汉堡菜单"/>
                    </StackPanel>
                    <ListView Grid.Row="1" x:Name="mainListView" ItemsSource="{Binding menuItems}" ItemTemplate="{StaticResource MenuItemDataTemplate}" />
                </Grid>
            </SplitView.Pane>
            <Frame x:Name="splitVewFrame" Margin="0,10" />
        </SplitView>
    </Grid>

添加菜单项数据源

   ObservableCollection<MenuItem> menuItems = new ObservableCollection<MenuItem>()
        {
            new MenuItem() { Icon=Symbol.People,Text="People"},
             new MenuItem() { Icon=Symbol.Phone,Text="Phone"},
              new MenuItem() { Icon=Symbol.Message,Text="Message"},
               new MenuItem() { Icon=Symbol.Mail,Text="Mail"}
        };
            mainListView.ItemsSource = menuItems;

汉堡按钮切换SplitView收起折叠状态

 private void hanburgButton_Click(object sender, RoutedEventArgs e)
        {
            mainSplitView.IsPaneOpen = !mainSplitView.IsPaneOpen;
        }

SplitView常用属性

  • CompactPaneLength
    设置SplitView收起的长度
  • OpenPaneLength
    设置SplitView打开的长度
  • DisplayMode
    Overlay:窗格打开时会覆盖内容,且不会占据控件布局中的空间。
    Inline: 窗格及内容是并行显示的,并占据控件布局中的空间。
    CompactOverlay:定义的窗格数量及内容是并行显示的,并占据控件布局中的空间。窗格的其余部分打开时会覆盖内容,且不会占据控件布局中的空间。
    CompactInline:定义的窗格数量及内容是并行显示的,并占据控件布局中的空间.窗格的其余部分打开时会将内容推到侧边,且会占据控件布局中的空间.

参考msdn

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 小广告今年开始使用简书,同时也产生了写博文的兴趣了,在写完文章发现没有.NET专题,于是创建了.NET专题也希望大...
    丶PanPan阅读 2,164评论 1 5
  • 3.1. 介绍 现在,您已经安装了Wireshark并有可能热衷于开始捕捉您的第一个数据包。在接下来的章节中,我们...
    wwyyzz阅读 1,405评论 0 1
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,136评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,223评论 4 61
  • 我觉得我盯着天花板看了有半个小时。我都21岁了,就谈了一次恋爱,还是这样的结果。是我没经验才导致这样的结果吗?...
    LeeWill阅读 257评论 0 0