UWP汉堡菜单之MVVM模式实现

小广告
今年开始使用,同时也产生了写博文的兴趣了,在写完文章发现没有.NET专题,于是创建了.NET专题也希望大家多多投稿,欢迎来"搞"!
吐槽
吐槽一下博客园,本来下了很大的勇气将UWP汉堡菜单的使用发到了博客园并提交到了首页,可惜被移除了,太失望了,不知道博客园是什么审核机制,吐槽完毕!

前面说道了UWP汉堡菜单的使用,今天主要是以MVVM的模式来实现汉堡菜单和大家分享,有什么不正确的地方望指正,我也是初学者,有什么问题也可以在微博上与我讨论。

UWP汉堡菜单之MVVM模式实现_第1张图片
项目结构图
UWP汉堡菜单之MVVM模式实现_第2张图片
汉堡菜单

1.XAML
XAML代码和前面的几乎一致,需要注意的是数据绑定的模式。

    x:Class="HamburgNavigation.View.MainView"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:local="using:HamburgNavigation"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d">

    
        
            
                
                    
                    
                
            
        
    

    
        
            
                
                    
                        
                        
                    
                    
                        

2.ViewModel

    public class MainViewModel : NotficationObject
    {
        private ObservableCollection _menuItems;
        /// 
        /// 汉堡菜单集合
        /// 
        public ObservableCollection MenuItems
        {
            get { return _menuItems; }
            set
            {
                _menuItems = value;
                ProperyChange("MenuItems");
            }
        }

        private bool _isPaneOpen;
        /// 
        /// 汉堡菜单是否打开
        /// 
        public bool IsPaneOpen
        {
            get { return _isPaneOpen; }
            set
            {
                _isPaneOpen = value;
                ProperyChange("IsPaneOpen");
            }
        }

        private string _hamburgTitle;

        /// 
        /// 汉堡菜单标题名称
        /// 
        public string HamburgTitle
        {
            get { return _hamburgTitle; }
            set
            {
                _hamburgTitle = value;
                ProperyChange("HamburgTitle");
            }
        }

        public MainViewModel()
        {
            HamburgTitle = "汉堡菜单";

            MenuItems = new ObservableCollection()
            {
                 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"}
            };
            HamburgButtonCommand = new DelegateCommand();
            HamburgButtonCommand.ExecuteAction = new Action(HamburgButton);
        }

        public DelegateCommand HamburgButtonCommand { get; private set; }

        private void HamburgButton(object paramenter)
        {
            IsPaneOpen = IsPaneOpen ? false : true;
        }
    }
 
 

3.使用
在MainView的构造函数中添加如下代码即可。

DataContext = new MainViewModel();

4.源码
度娘盘

参考地址:DataBinding msdn

END

你可能感兴趣的:(UWP汉堡菜单之MVVM模式实现)