如何使用MVVM创建键盘事件

 我来答
好口子
2017-01-02 · 好口子,手把手教你维护好你的征信!
好口子
采纳数:29399 获赞数:66629

向TA提问 私信TA
展开全部
准备基础代码  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,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式