C#学习教程:具有可绑定属性的自定义视图未在Xamarin.FormsSAP上正确绑定但是不知何故,应该执行此操作的命令从未正确绑定并因此执行。这是CheckBox.xaml.cs(控件)中的绑定属性:publicstaticreadonlyBindablePropertyCheckBoxCommandProperty=BindableProperty.Create(checkbox=>checkbox.CheckBoxCommand,null,propertyChanged:(bindable,oldValue,newValue)=>{CheckBoxcheckbox=(CheckBox)bindable;EventHandlereventHandler=checkbox.CheckedChanged;if(eventHandler!=null){eventHandler(checkbox,checkbox.IsChecked);}});公共事件EventHandlerCheckedChanged;公共ICommandCheckBoxCommand{get{返回(ICommand)GetValue(CheckBoxCommandProperty);}set{SetValue(CheckBoxCommandProperty,value);}}这就是我在ViewModel上的内容:publicICommandNext_OnClick{get;放;}publicICommandOnCheckBoxTapChanged{得到;放;}publicTermsAndConditionsViewModel(){Next_OnClick=newCommand(NextClicked);OnCheckBoxTapChanged=newCommand(CheckBoxTapped);}privatevoidCheckBoxTapped(){if(IsCheckedChanged){Next_IsEnabled=true;}else{Next_IsEnabled=false;}}查看BoxTapped方法永远不会执行,所以我要设置的按钮属性永远不会改变提前谢谢大家!你可以做的是将这个问题的解决方案分为几个层次:首先,为复选框创建一个可绑定属性,并将其命名为Checked。我已经为它写了一个代码片段但实际上并没有编译它所以如果它不起作用你可能想要修改它publicstaticreadonlyBindablePropertyIsCheckedProperty=BindableProperty.Create(w=>w.IsChecked,false);publicboolIsChecked{get{返回GetValue(FooProperty);}set{SetValue(FooProperty,value);其次,在视图模型中使用更改通知privatebool_isChecked创建一个bool属性;公共布尔IsChecked{得到{返回_isChecked;}设置{_isChecked=值;RaisePropertyChanged("IsChecked");第三,将复选框“isChecked”的可绑定属性绑定到xaml视图模型中的属性:第四,将Xaml绑定到MVVM顺序中的按钮。在这些命令中,有一个表示“CanExecute”的布尔属性,它基本上启用或禁用按钮。因此,您在Xaml中所要做的就是将按钮的命令绑定到视图模型中的命令(我们称之为ClickCommand)。ClickCommand的CanExecute实际上只是一个返回“IsChecked”值的方法。这将使我们修改“IsChecked”属性的设置器,因此每次更改时它都应该通知命令检查CanExecute属性。所以最终的代码会像publicTermsAndConditionsViewModel(){NextCommand=newCommand(ExecuteNextCommand,CanExecuteNextCommand);OnCheckBoxTapChanged=newCommand(CheckBoxTapped);私人布尔_isChecked;publicboolIsChecked{get{return_isChecked;}set=value_isChecked;NextCommand.ChangeCanExecute();//这实际上会通知命令启用/禁用RaisePropertyChanged("IsChecked");}}publicCommandNextCommand{get;set;}//这种类型在Xamarin.Forms库中可用privateboolCanExecuteNextCommand(){returnIsChecked;}privatevoidExecuteNextCommand(){//按下按钮时执行}Xaml像使用Xamarin.Forms.Behavior一样解决它。它允许对控件进行多个绑定。例如>和ViewModel>上面是C#学习教程:带有Bindable属性的自定义视图不能正确绑定到Xamarin.FormsSAP上分享的所有内容,如果对大家有用还需要详细了解C#学习教程,希望大家多多关注—publicPasswordInputViewModel(){entry_Finished=newCommand(validateAndContinue);//unfocusedentry_Focused=newCommand(entryFocused);//focused}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
