猿问

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

如何使用MVVM创建键盘事件


慕尼黑8549860
浏览 778回答 1
1回答

神不在的星期二

准备基础代码  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就会发生相应的改变,反之亦然。
随时随地看视频慕课网APP
我要回答