if (e.DataFormItem != null && e.DataFormItem.Name == "Firstname") (e.DataFormItem as DataFormTextItem).KeyBoard = Keyboard.Plain;
dataForm.DataObject = new ContactInfo();
dataForm.RegisterEditor("Entry", new CustomEntryEditor(dataForm));
dataForm.RegisterEditor("FirstName", "Entry"); |
public class CustomEntryEditor : DataFormEditor<CustomEntry>
{
public CustomEntryEditor(SfDataForm dataForm) : base(dataForm)
{
}
protected override CustomEntry OnCreateEditorView()
{
CustomEntry customEntry = new CustomEntry();
customEntry.Keyboard = Keyboard.Create(KeyboardFlags.None);
return customEntry;
}
protected override void OnInitializeView(DataFormItem dataFormItem, CustomEntry view)
{
base.OnInitializeView(dataFormItem, view);
}
protected override void OnWireEvents(CustomEntry view)
{
view.TextChanged += View_TextChanged;
view.Unfocused += View_Unfocused;
}
protected override bool OnValidateValue(CustomEntry view)
{
var dataFormItemView = view.Parent as DataFormItemView;
return (DependencyService.Get<IDataForm>().ValidateDataFormItem(DataForm));
}
private void View_Unfocused(object sender, FocusEventArgs e)
{
OnValidateValue(sender as CustomEntry);
}
private void View_TextChanged(object sender, TextChangedEventArgs e)
{
OnCommitValue(sender as CustomEntry);
}
protected override void OnCommitValue(CustomEntry view)
{
var dataFormItemView = view.Parent as DataFormItemView;
var textValue = view.Text;
this.DataForm.ItemManager.SetValue(dataFormItemView.DataFormItem, view.Text);
}
} |
[assembly: ExportRenderer(typeof(CustomEntry), typeof(CustomLabelRenderer))]
namespace EntrySample.Droid
{
public class CustomLabelRenderer : EntryRenderer
{
public CustomLabelRenderer()
{
}
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged(e);
if (e.NewElement != null)
{
if (Control != null && !Control.IsSuggestionsEnabled)
Control.InputType = Android.Text.InputTypes.TextFlagNoSuggestions | Android.Text.InputTypes.ClassText | Android.Text.InputTypes.TextVariationVisiblePassword;
}
}
}
} |
ssembly: Xamarin.Forms.Dependency(typeof(DataFormValidation))]
public class DataFormValidation : IDataForm
{
public bool ValidateDataFormItem(SfDataForm dataForm)
{
var nativeObject = dataForm.GetType().GetProperty("NativeObject", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public).GetValue(dataForm);
if (nativeObject != null)
{
var nativeDataForm = (nativeObject as Syncfusion.Android.DataForm.SfDataForm);
var method = nativeDataForm.ItemManager.GetType().GetMethod("ValidateDataFormItem", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public);
var nativedataFormItem = nativeDataForm.ItemManager.DataFormItems["FirstName "];
if (nativedataFormItem != null && method != null)
{
var nativeValue = nativeDataForm.ItemManager.GetValue(nativedataFormItem);
method.Invoke(nativeDataForm.ItemManager, new object[] { nativedataFormItem, nativeValue, true });
var isValid = nativedataFormItem.GetType().GetProperty("IsValid", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Public).GetValue(nativedataFormItem);
return (bool)isValid;
}
}
return true;
}
}
|