为了账号安全,请及时绑定邮箱和手机立即绑定

如何使用MVVM创建键盘事件?

如何使用MVVM创建键盘事件?

慕尼黑8549860 2018-11-14 19:15:47
如何使用MVVM创建键盘事件
查看完整描述

1 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

准备基础代码  1  创建一个ViewModelBase  publicabstractclassViewModelBase:INotifyPropertyChanged{  //属性改变事件  publiceventPropertyChangedEventHandlerPropertyChanged;    //当属性改变的时候,调用该方法来发起一个消息,通知View中绑定了propertyName的元素做出调整  publicvoidRaisePropertyChanged(stringpropertyName)  {  PropertyChangedEventHandlerhandler=PropertyChanged;  if(handler!=null)  {  handler(this,newPropertyChangedEventArgs(propertyName));  }  }  }  2  创建一个DelegateCommand  publicclassDelegateCommand:ICommand{  readonlyAction_execute;  readonlyPredicate_canExecute;    publicDelegateCommand(Actionexecute)  :this(execute,null)  {  }  publicDelegateCommand(Actionexecute,PredicatecanExecute)  {  if(execute==null)  thrownewArgumentNullException("execute");  _execute=execute;  _canExecute=canExecute;  }  publicvoidExecute(objectparameter)  {  _execute(parameter);  }  publicboolCanExecute(objectparameter)  {  return_canExecute==null?true:_canExecute(parameter);  }  publiceventEventHandlerCanExecuteChanged  {  add{CommandManager.RequerySuggested+=value;}  remove{CommandManager.RequerySuggested-=value;}  }  }  END    创建示例用ViewModel  让ViewModel继承自ViewModelBase。  publicclassMainWindowViewModel:ViewModelBase{  privatestring_input;  publicstringInput  {  get  {  return_input;  }  set  {  _input=value;  RaisePropertyChanged("Input");  }  }    privatestring_display;  publicstringDisplay  {  get  {  return_display;  }  set  {  _display=value;  RaisePropertyChanged("Display");  }  }    publicDelegateCommandSetTextCommand{get;set;}    privatevoidSetText(objectobj)  {  Display=Input;  }  publicMainWindowViewModel()  {  SetTextCommand=newDelegateCommand(newAction(SetText));  }  }  END    创建View  最少只需要三个控件:一个textbox拿来做输入,一个label拿来做输出,一个button拿来提交数据。                END    绑定View和ViewModel  当View和ViewModel都已经创建完之后,最后一步就是把它哥俩绑定在一起了。这样,当View改变的时候,ViewModel就会发生相应的改变,反之亦然。

查看完整回答
反对 回复 2018-12-12
  • 1 回答
  • 0 关注
  • 786 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信