zoukankan      html  css  js  c++  java
  • 【MVVM 原生】原生MVVM的使用

    一、前言

          前些天需要完成一个任务,该任务属于公司的一些核心代码,为了避免不必要的麻烦,任务要求不能使用第三方的MVVM框架,必须用原生的。

           平时习惯了Dev与MVVMLight,遇上原生的说实话还真不会,于是写下来当做备忘录。  (界面老司机可以直接不看了)

    二、代码范例

          View的部分就直接略过了,看Model部分:

    public class Model : INotifyPropertyChanged
    {
    public string Isbn { get; set; } public string Description { get; set; }
    //需要改变的属性值 private string _AS; public string AS { get { return _AS; } set { _AS = value; NotifyPropertyChanged("AS"); } } public event PropertyChangedEventHandler PropertyChanged; private void NotifyPropertyChanged(string name) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); } }

          ViewModel部分:

    public class VM : INotifyPropertyChanged
    {
            private string currentIsbn = string.Empty;
            public string CurrentIsbn
            {
                get
                {
                    return currentIsbn;
                }
                set
                {
                    currentIsbn = value;
                    NotifyPropertyChanged("CurrentIsbn");
                }
            }
           
            public ObservableCollection<Model> Isbns { get; set; }
    
    
            private ICommand _confirmCmd;
            public ICommand ConfirmCmd
            {
                get { return _confirmCmd ?? (_confirmCmd = new ConfirmFunction(this)); }
                set
                {
                    _confirmCmd = value;
                }
            }
    
    
            public VM()
            {
                 Isbns = new ObservableCollection<Model>();
            }
    
                         
            public event PropertyChangedEventHandler PropertyChanged;
    
            private void NotifyPropertyChanged(string name)
            {
                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name));
            }
     }
    
    
     public class ConfirmFunction : ICommand
     {
            private VM vm;
    
            public ConfirmFunction(VM _vm)
            {
                this.vm = _vm;
            }
    
            public bool CanExecute(object parameter)
            {
                return true;
            }
    
            public event EventHandler CanExecuteChanged;
    
            public void Execute(object parameter)
            {
               // do your job
            }
      }

    小结:

    1. Model与ViewModel继承INotifyPropertyChanged

    2. 与View有交互的绑定字段需要如下格式:

        private string _a;

        public string a
        {
                get
                {
                    return _a;
                }
                set
                {
                    _a = value;
                    NotifyPropertyChanged("a");
                }
         }

    3. 所有命令都为ICommand类型,然后再依照上面的格式通过Delegate完成

    4. 写Command类的时候VS会提示你需要哪些方法的,哈哈哈

     

  • 相关阅读:
    三分钟学会funsioncharts
    funsioncharts的图表操作heatmap
    FunsionCharts图标控件点击
    微信小程序组件解读和分析:二、scrollview可滚动视图区域 微信开发
    微信小程序组件解读和分析:五、text文本 微信开发
    微信小程序组件解读和分析:三、swiper滑块视图 微信开发
    微信小程序组件解读和分析:四、icon图标 微信开发
    asp.net 判断上传文件的类型
    C#序列化(Serialize)、反序列化(Deserialize)
    [置顶] http://www.openlib.com 一个神奇的网站
  • 原文地址:https://www.cnblogs.com/lovecsharp094/p/6574583.html
Copyright © 2011-2022 走看看