|
[C#]
[Display(Prompt ="In built password editor")]
[Required(AllowEmptyStrings = false, ErrorMessage = "Value should not be empty")]
[DataType(DataType.Password)]
public string Captcha { get; set; }
|
|
[C#]
public class CustomPasswordEntry : DataFormEditor<Entry>
{
public CustomPasswordEntry(SfDataForm dataForm) : base(dataForm)
{
}
protected override Entry OnCreateEditorView()
{
return new Entry();
}
protected override void OnInitializeView(DataFormItem dataFormItem, Entry view)
{
view.IsPassword = true;
}
protected override void OnWireEvents(Entry view)
{
view.TextChanged += View_TextChanged;
view.Unfocused += View_Unfocused;
}
protected override bool OnValidateValue(Entry view)
{
var dataFormItemView = view.Parent as DataFormItemView;
return (DependencyService.Get<IDataForm>().ValidateDataFormItem(DataForm));
}
private void View_Unfocused(object sender, FocusEventArgs e)
{
OnValidateValue(sender as Entry);
}
private void View_TextChanged(object sender, TextChangedEventArgs e)
{
OnCommitValue(sender as Entry);
}
protected override void OnCommitValue(Entry view)
{
var dataFormItemView = view.Parent as DataFormItemView;
var textValue = view.Text;
this.DataForm.ItemManager.SetValue(dataFormItemView.DataFormItem, view.Text);
}
} |
|
[C#]
[assembly: 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["Password"];
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;
}
} |