Skip to content

Commit 09a6312

Browse files
authored
ReadMe file updated with KB details
1 parent 37f92f5 commit 09a6312

File tree

1 file changed

+109
-2
lines changed

1 file changed

+109
-2
lines changed

README.md

Lines changed: 109 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,109 @@
1-
# programatic-converter-dataform-xamarin
2-
How to programmatically implement converter to Xamarin.Forms DataForm (SfDataForm)
1+
# How to programmatically implement converter to Xamarin.Forms DataForm (SfDataForm)
2+
3+
You can apply the converter for Editor in Xamarin.Forms [SfDataForm](https://help.syncfusion.com/xamarin/dataform/getting-started?) by using custom editor.
4+
5+
You can create and add custom editor to SfDataForm by overriding the [DataFormEditor](https://help.syncfusion.com/cr/cref_files/xamarin/Syncfusion.SfDataForm.XForms~Syncfusion.XForms.DataForm.Editors.DataFormEditor%601.html?) class, where the CustomNumericEditor is inherited using the DataFormEditor<Entry>.
6+
7+
Refer to the [online user guide documentation](https://help.syncfusion.com/xamarin/sfdataform/editors?&_ga=2.215218846.843378045.1589170218-1204678185.1570168583#custom-editor) for creating new custom editor in DataForm.
8+
9+
You can also refer the following article.
10+
11+
https://www.syncfusion.com/kb/11541/how-to-programmatically-implement-converter-to-xamarin-forms-dataform-sfdataform
12+
13+
**C#**
14+
15+
CustomNumericEditor extends DataFormEditor to add converter programmatically.
16+
``` c#
17+
public class CustomNumericEditor : DataFormEditor<Entry>
18+
{
19+
public CustomNumericEditor(SfDataForm dataForm) : base(dataForm)
20+
{
21+
}
22+
protected override Entry OnCreateEditorView(DataFormItem dataFormItem)
23+
{
24+
return new Entry();
25+
}
26+
protected override void OnInitializeView(DataFormItem dataFormItem, Entry view)
27+
{
28+
base.OnInitializeView(dataFormItem, view);
29+
view.Keyboard = Keyboard.Numeric;
30+
this.OnUpdateValue(dataFormItem, view);
31+
this.OnUpdateReadOnly(dataFormItem, view);
32+
}
33+
protected override void OnWireEvents(Entry view)
34+
{
35+
view.TextChanged += OnViewTextChanged;
36+
view.Focused += View_Focused;
37+
view.Unfocused += View_Unfocused;
38+
}
39+
private void View_Unfocused(object sender, Xamarin.Forms.FocusEventArgs e)
40+
{
41+
var view = sender as Entry;
42+
view.TextColor = Color.Red;
43+
44+
if (this.DataForm.CommitMode == Syncfusion.XForms.DataForm.CommitMode.LostFocus || this.DataForm.ValidationMode == ValidationMode.LostFocus)
45+
this.OnValidateValue(view);
46+
}
47+
private void View_Focused(object sender, Xamarin.Forms.FocusEventArgs e)
48+
{
49+
var view = (sender as Entry);
50+
view.TextColor = Color.Green;
51+
}
52+
private void OnViewPropertyChanged(object sender, PropertyChangedEventArgs e)
53+
{
54+
OnValidateValue(sender as Entry);
55+
}
56+
protected override bool OnValidateValue(Entry view)
57+
{
58+
return this.DataForm.Validate("Amount");
59+
}
60+
private void OnViewTextChanged(object sender, TextChangedEventArgs e)
61+
{
62+
var view = sender as Entry;
63+
if (DataForm.CommitMode == Syncfusion.XForms.DataForm.CommitMode.PropertyChanged || DataForm.ValidationMode == ValidationMode.PropertyChanged)
64+
this.OnValidateValue(view);
65+
}
66+
protected override void OnCommitValue(Entry view)
67+
{
68+
var dataFormItemView = view.Parent as DataFormItemView;
69+
var value = Convert.ToInt32(view.Text);
70+
view.Text = (value * 10).ToString();
71+
this.DataForm.ItemManager.SetValue(dataFormItemView.DataFormItem, view.Text);
72+
}
73+
protected override void OnUpdateValue(DataFormItem dataFormItem, Entry view)
74+
{
75+
var cellValue = this.DataForm.ItemManager.GetValue(dataFormItem);
76+
if (cellValue != null && view.Text == cellValue.ToString())
77+
return;
78+
view.Text = cellValue == null ? string.Empty : cellValue.ToString();
79+
}
80+
protected override void OnUpdateReadOnly(DataFormItem dataFormItem, Entry view)
81+
{
82+
base.OnUpdateReadOnly(dataFormItem, view);
83+
}
84+
protected override void OnUnWireEvents(Entry view)
85+
{
86+
view.TextChanged -= OnViewTextChanged;
87+
view.Focused -= View_Focused;
88+
view.Unfocused -= View_Unfocused;
89+
}
90+
}
91+
```
92+
Refer to the following code example for register the editor using [RegisterEditor](https://help.syncfusion.com/cr/cref_files/xamarin-android/Syncfusion.SfDataForm.Android~Syncfusion.Android.DataForm.SfDataForm~RegisterEditor.html?) as CustomNumericEditor to make data form item as custom editor in DataForm.
93+
94+
**C#**
95+
96+
Numeric editor registered to DataForm.
97+
``` c#
98+
public class DataFormBehavior : Behavior<ContentPage>
99+
{
100+
SfDataForm dataForm;
101+
protected override void OnAttachedTo(ContentPage bindable)
102+
{
103+
base.OnAttachedTo(bindable);
104+
dataForm = bindable.FindByName<SfDataForm>("dataForm");
105+
dataForm.RegisterEditor("Numeric", new CustomNumericEditor(dataForm));
106+
dataForm.RegisterEditor("Amount", "Numeric");
107+
}
108+
}
109+
```

0 commit comments

Comments
 (0)