|
[C#]
dataForm.LayoutManager = new DataFormLayoutManagerExt(dataForm);
public class DataFormLayoutManagerExt : DataFormLayoutManager
{
public DataFormLayoutManagerExt(SfDataForm dataForm) : base(dataForm)
{
}
protected override View GenerateViewForLabel(DataFormItem dataFormItem)
{
var view = base.GenerateViewForLabel(dataFormItem);
var textView = (view as Label);
textView.TextColor = Color.Blue;
return view;
}
protected override void OnEditorCreated(DataFormItem dataFormItem, View editor)
{
if (dataFormItem.Name == "Addresses")
{
(editor as Entry).TextColor = Color.YellowGreen;
}
else
{
base.OnEditorCreated(dataFormItem, editor);
}
} } |
|
[C#]
[assembly: ExportRenderer(typeof(CustomEntry), typeof(CustomRenderer))]
public class CustomRenderer : EntryRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
{
base.OnElementChanged(e);
if (e.NewElement != null && this.Control != null)
{
((CustomEntry)e.NewElement).PropertyChanging += MyEntryRenderer_PropertyChanging;
this.Control.BorderBrush = new SolidColorBrush(Colors.Red);
}
}
private void MyEntryRenderer_PropertyChanging(object sender, PropertyChangingEventArgs e)
{
if (e.PropertyName == VisualElement.IsFocusedProperty.PropertyName)
{
if (this.Control.FocusState == Windows.UI.Xaml.FocusState.Unfocused)
{
this.Control.BorderBrush = new SolidColorBrush(Colors.White);
}
}
}
} |
|
[C#]
public class CustomEntryEditor : DataFormEditor<CustomEntry>
{
public CustomEntryEditor(SfDataForm dataForm) : base(dataForm)
{
}
protected override CustomEntry OnCreateEditorView()
{
return new CustomEntry();
}
protected override void OnInitializeView(DataFormItem dataFormItem, CustomEntry view)
{
view.BackgroundColor = Color.Pink;
}
protected override void OnWireEvents(CustomEntry view)
{
view.TextChanged += View_TextChanged;
view.Focused += View_Focused;
view.Unfocused += View_Unfocused;
}
private void View_Focused(object sender, FocusEventArgs e)
{
var view = (sender as CustomEntry);
view.BackgroundColor = Color.Yellow;
view.TextColor = Color.White;
}
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)
{
var view = (sender as CustomEntry);
view.BackgroundColor = Color.Green;
view.TextColor = Color.Red;
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);
}
}
public class CustomEntry : Entry
{
public CustomEntry()
{
}
} |
|
[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;
}
} |