public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            ViewGroup layoutRoot = (ViewGroup)inflater.Inflate(Resource.Layout.fragment_dataform_features, null);

            CheckBox readOnly = (CheckBox)layoutRoot.FindViewById(Resource.Id.readOnly);

            readOnly.SetOnCheckedChangeListener(this);

            dataForm = Android.Runtime.Extensions.JavaCast <RadDataForm>(layoutRoot.FindViewById(Resource.Id.dataForm));
            dataForm.LayoutManager = new DataFormLinearLayoutManager(this.Activity);

            person = new Person();
            person.AddPropertyChangedListener(this);

            dataForm.Entity = new XamarinEntity(person);

            DataFormSpinnerEditor editor = Android.Runtime.Extensions.JavaCast <DataFormSpinnerEditor> (dataForm.GetExistingEditorForProperty("EmployeeType"));

            editor.Adapter = new Com.Telerik.Widget.Dataform.Visualization.Editors.Adapters.EditorSpinnerAdapter(this.Activity, new Java.Lang.Object[] { "PROGRAMMER", "MANAGER", "SUPPORT", "MARKETING" });

            RangeValidator validator = (RangeValidator)dataForm.GetExistingEditorForProperty("Age").Property().Validator;

            validator.Max = 30;
            validator.Min = 18;

            Spinner commitModes = (Spinner)layoutRoot.FindViewById(Resource.Id.commitModeSpinner);

            commitModes.Adapter = new ArrayAdapter(this.Activity, Android.Resource.Layout.SimpleSpinnerItem, CommitMode.Values());
            commitModes.OnItemSelectedListener = this;

            personText = (TextView)layoutRoot.FindViewById(Resource.Id.personText);

            commitButton = (Button)layoutRoot.FindViewById(Resource.Id.manualCommit);
            commitButton.SetOnClickListener(this);

            return(layoutRoot);
        }
        protected override EntityPropertyEditor GetCustomEditorForProperty(RadDataForm form, Com.Telerik.Widget.Dataform.Engine.IEntityProperty nativeProperty, Telerik.XamarinForms.Input.DataForm.IEntityProperty property)
        {
            var name = property.PropertyName;

            switch (name)
            {
            case nameof(Reservation.ReservationHolder):
                nativeProperty.ImageResource = Resource.Drawable.DataForm_Guest_Name;

                var editor = new DataFormTextEditor(form,
                                                    Resource.Layout.Editor_Main_Layout_1,
                                                    form.EditorsHeaderLayout,
                                                    Resource.Id.data_form_text_viewer_header,
                                                    Resource.Layout.data_form_text_editor,
                                                    Resource.Id.data_form_text_editor,
                                                    form.EditorsValidationLayout,
                                                    nativeProperty);

                return(editor);

            case nameof(Reservation.HolderPhoneNumber):
                nativeProperty.ImageResource = Resource.Drawable.DataForm_Phone_Number;

                var textEditor = new DataFormTextEditor(form,
                                                        Resource.Layout.Editor_Main_Layout_1,
                                                        form.EditorsHeaderLayout,
                                                        Resource.Id.data_form_text_viewer_header,
                                                        Resource.Layout.data_form_text_editor,
                                                        Resource.Id.data_form_text_editor,
                                                        form.EditorsValidationLayout,
                                                        nativeProperty);
                textEditor.HeaderView.Visibility = Android.Views.ViewStates.Invisible;

                return(textEditor);

            case nameof(Reservation.GuestNumber):
                nativeProperty.ImageResource = Resource.Drawable.DataForm_Guest_Number;

                var numberEditor = new DataFormNumberPickerEditor(form,
                                                                  Resource.Layout.Editor_Main_Layout_1,
                                                                  form.EditorsHeaderLayout,
                                                                  Resource.Id.data_form_text_viewer,
                                                                  Resource.Layout.data_form_number_picker,
                                                                  Resource.Id.data_form_number_picker_editor,
                                                                  form.EditorsValidationLayout,
                                                                  nativeProperty);

                var label = ((numberEditor.EditorView as RadNumberPicker).LabelView() as TextView);
                numberEditor.EditorView.RootView.LayoutParameters.Height = (int)this.Context.ToPixels(44);
                numberEditor.EditorView.LayoutParameters.Height          = (int)this.Context.ToPixels(44);
                if (DarkThemeHelper.IsDarkThemeApplied(this.Context))
                {
                    label.SetTextColor(Android.Graphics.Color.White);
                }
                else
                {
                    label.SetTextColor(Android.Graphics.Color.Black);
                }

                return(numberEditor);

            case nameof(Reservation.ReservationDate):
                nativeProperty.ImageResource = Resource.Drawable.DataForm_Date;

                var dateEditor = new DataFormDateEditor(form,
                                                        Resource.Layout.Editor_Main_Layout_2,
                                                        form.EditorsHeaderLayout,
                                                        Resource.Id.data_form_text_viewer,
                                                        Resource.Layout.data_form_date_editor,
                                                        Resource.Id.data_form_date_editor,
                                                        form.EditorsValidationLayout,
                                                        nativeProperty);

                return(dateEditor);

            case nameof(Reservation.ReservationTime):
                var timeEditor = new DataFormTimeEditor(form,
                                                        Resource.Layout.Editor_Main_Layout_2,
                                                        form.EditorsHeaderLayout,
                                                        Resource.Id.data_form_text_viewer,
                                                        Resource.Layout.data_form_time_editor,
                                                        Resource.Id.data_form_date_editor,
                                                        form.EditorsValidationLayout,
                                                        nativeProperty);

                var editorView = timeEditor.EditorView as EditText;
                (editorView.LayoutParameters as FrameLayout.LayoutParams).LeftMargin = (int)this.Context.ToPixels(12);

                (timeEditor.HeaderView.LayoutParameters as FrameLayout.LayoutParams).LeftMargin = (int)this.Context.ToPixels(12);

                return(timeEditor);

            case nameof(Reservation.OrderOrigin):
                var orderEditor = new DataFormSpinnerEditor(form,
                                                            Resource.Layout.Editor_Main_Layout_2,
                                                            form.EditorsHeaderLayout,
                                                            Resource.Id.data_form_text_viewer_header,
                                                            Resource.Layout.data_form_spinner_editor,
                                                            Resource.Id.data_form_spinner_editor,
                                                            form.EditorsValidationLayout,
                                                            nativeProperty, null);

                var leftMargin = (int)this.Context.ToPixels(32);

                (orderEditor.EditorView.LayoutParameters as FrameLayout.LayoutParams).LeftMargin = leftMargin;
                (orderEditor.HeaderView.LayoutParameters as FrameLayout.LayoutParams).LeftMargin = leftMargin;

                return(orderEditor);

            case nameof(Reservation.TableSection):
                nativeProperty.ImageResource = Resource.Drawable.DataForm_Table_Number;

                var sectionEditor = new DataFormSpinnerEditor(form,
                                                              Resource.Layout.Editor_Main_Layout_2,
                                                              form.EditorsHeaderLayout,
                                                              Resource.Id.data_form_text_viewer_header,
                                                              Resource.Layout.data_form_spinner_editor,
                                                              Resource.Id.data_form_spinner_editor,
                                                              form.EditorsValidationLayout,
                                                              nativeProperty, null);

                var sectionEditorView = sectionEditor.EditorView as Spinner;
                (sectionEditorView.LayoutParameters as FrameLayout.LayoutParams).RightMargin = (int)this.Context.ToPixels(12);
                return(sectionEditor);

            case nameof(Reservation.TableNumber):
                var tableNumberEditor = new DataFormSpinnerEditor(form,
                                                                  Resource.Layout.Editor_Main_Layout_2,
                                                                  form.EditorsHeaderLayout,
                                                                  Resource.Id.data_form_text_viewer_header,
                                                                  Resource.Layout.data_form_spinner_editor,
                                                                  Resource.Id.data_form_spinner_editor,
                                                                  form.EditorsValidationLayout,
                                                                  nativeProperty, null);

                (tableNumberEditor.EditorView.LayoutParameters as FrameLayout.LayoutParams).LeftMargin = (int)this.Context.ToPixels(12);
                (tableNumberEditor.HeaderView.LayoutParameters as FrameLayout.LayoutParams).LeftMargin = (int)this.Context.ToPixels(12);

                return(tableNumberEditor);

            default:
                return(base.GetCustomEditorForProperty(form, nativeProperty, property));
            }
        }