|
dataForm.RegisterEditor("AutoComplete", new CustomAutoCompleteEditor(dataForm));
… … … <dataForm:SfDataForm x:Name="dataForm" DataObject="{Binding ContactsInfo}" LayoutOptions="TextInputLayout" AutoGenerateItems="False"> <dataForm:SfDataForm.Items>
<dataForm:DataFormItem Name="FirstName" Editor="Text" />
<dataForm:DataFormItem Name="LastName" Editor="Text"/>
<dataForm:DataFormAutoCompleteItem Name="Country" BindingContext="{x:Reference Client}" Editor="AutoComplete" ItemsSource ="{Binding Addresses}" />
</dataForm:SfDataForm.Items>
</dataForm:SfDataForm> |
|
protected override void OnInitializeView(DataFormItem dataFormItem, SfAutoComplete view)
{
base.OnInitializeView(dataFormItem, view);
autoComplete = view;
view.Completed += View_Completed;
autoCompleteItem = dataFormItem as DataFormAutoCompleteItem;
view.ShowSuggestionsOnFocus = true;
view.MultiSelectMode = MultiSelectMode.Token;
view.SelectionType = SelectionType.Default;
view.TokensWrapMode = TokensWrapMode.Wrap;
view.EnableAutoSize = true;
}
private void View_Completed(object sender, System.EventArgs e) {
var text = autoComplete.Text;
if (string.IsNullOrEmpty(text))
return;
var selectedItems = autoComplete.SelectedValue as List<string>;
var exists = (autoCompleteItem.ItemsSource as IList<string>).Contains(text);
if (selectedItems == null || !exists)
{
autoCompleteItem.ItemsSource.Add(text);
sfDataForm.UpdateEditor("Country");
if (autoComplete.SelectedItem is ObservableCollection<object>)
{
(autoComplete.SelectedItem as ObservableCollection<object>).Add(text);
}
}
} |