编辑器
RadDataForm提供了以下方法来替换默认的编辑器:
- 无效RegisterEditor(字符串propertyName, EditorTypeeditorType):为具有特定名称的属性注册编辑器类型。
- 无效RegisterEditor(类型propertyType, EditorTypeeditorType):为特定属性类型注册编辑器类型。
为属性名称注册的编辑器比为属性类型注册的编辑器具有更高的优先级。
编辑器类型
的值EditorType每个平台对枚举的解释不同,当缺少编辑器类型时,将使用最接近的类型。下表显示了类型映射:
编辑器类型 | 本地编辑 | 值类型 |
---|---|---|
SliderEditor | Android: DataFormSeekBarEditor iOS: TKDataFormSliderEditor UWP: SliderCustomEditor |
浮动 |
PickerEditor | Android: DataFormSpinnerEditor iOS: TKDataFormPickerViewEditor UWP: ListEditor |
* *需要PropertyDataSourceProvider |
TextEditor | Android: DataFormTextEditor iOS: TKDataFormTextFieldEditor UWP: StringEditor |
字符串 |
SegmentedEditor | Android: DataFormSegmentedEditor iOS: TKDataFormSegmentedEditor UWP: SegmentedCustomEditor |
* *需要PropertyDataSourceProvider |
NumberPickerEditor | Android: DataFormNumberPickerEditor iOS: TKDataFormStepperEditor UWP: NumericEditor |
双 |
IntegerEditor | Android: DataFormIntegerEditor iOS: TKDataFormNumberEditor UWP: * StringEditor |
int |
DecimalEditor | Android: DataFormDecimalEditor iOS: TKDataFormDecimalEditor UWP: * StringEditor |
双 |
CheckBoxEditor | Android: DataFormCheckBoxEditor iOS: * TKDataFormSwitchEditor UWP: BooleanEditor |
双 |
ToggleButtonEditor | Android: DataFormToggleButtonEditor iOS: * TKDataFormSwitchEditor UWP: * BooleanEditor |
保龄球 |
DateEditor | Android: DataFormDateEditor iOS: TKDataFormDatePickerEditor UWP: DateEditor |
DateTime |
TimeEditor | Android: DataFormTimeEditor iOS: TKDataFormTimePickerEditor UWP: TimeEditor |
DateTime |
*有些编辑器不支持所有本地平台。在这种情况下,我们使用最接近的代换。
**PropertyDataSourceProvider
有时你的属性类型与编辑器支持的类型不一样,例如当你想用NumberPicker编辑器编辑整数时。在这种情况下,你必须使用a转换器.
下图显示了Android、iOS和UWP平台上不同编辑器的可视化效果。
事件
RadDataForm提供了以下与编辑器值相关的事件:
- EditorValueChanged:更新DataForm编辑器的值时发生。的EditorValueChanged事件处理程序接收两个参数:
- 类型为object的sender参数,但可以强制转换为RadDataForm类型。
- 一个EditorValueChangedEventArgs对象,该对象具有对PropertyName(已编辑的DataForm Source属性)和新值的引用。
自定义编辑
如果上述为Xamarin提供的RadDataForm中的任何一个编辑器不适合实现特定的需求,则可以为每个平台创建一个自定义的本机编辑器。
通过自定义渲染器,您可以在Android、iOS和UWP上使用任何可用的编辑器,用于未暴露给Xamarin.Forms的本机DataForm控件。你可以在下面的链接中找到更多的信息:-Xamarin的数据形式。安卓系统编辑器-Xamarin的数据形式。iOS编辑
首先,您需要通过DataForm的RegisterEditor方法指定将使用自定义编辑器的属性:
dataForm。RegisterEditor(“性别”,EditorType.Custom);
注册自定义编辑器类型时,将在每个平台上调用特定的呈现器方法。您必须继承渲染器并覆盖特定的方法来设置自定义编辑器。
[assembly: ExportRenderer(typeof(RadDataForm), typeof(CustomRenderer))] CustomRenderer: DataFormRenderer{…]}
DataFormRenderer在每个平台上的工作方式不同-请参阅下面覆盖可用的特定方法。
安卓
Android DataFormRenderer可用的方法覆盖:
- GetCustomEditorForProperty
- GetCustomViewerForProperty
- UpdateEditor
- UpdateViewer
在Android上,如果属性是只读的,就会使用查看器。
你可以在Android上找到一个演示自定义编辑器的例子:Android中的自动补全编辑器.
iOS
iOS DataFormRenderer可用的方法覆盖:
- GetCustomEditorType
- InitEditor
- UpdateEditor
在iOS上,如果一个属性是只读的,编辑器将被禁用。
你可以在iOS上找到一个演示自定义编辑器的例子:iOS的电子邮件和密码编辑器.
UWP
UWP DataFormRenderer可用的方法覆盖:
- GetCustomEditorType
- UpdateEditor