How to get selected item using DataFormAutoCompleteItem and MVVM

I have the following SfDataForm on which I would like to use DataFormAutoCompleteItem. The values are populated correctly but how can identify the selected item when using DataFromAutoCompleteItem in a MVVM 

<dataForm:SfDataForm
AutoGenerateItems="False"
CommitMode="PropertyChanged"
DataObject="{Binding Receipt}"
Grid.Row="1"
LayoutType="TextInputLayout"
ValidationMode="PropertyChanged"
x:Name="ReceiptDataForm">
<dataForm:SfDataForm.LabelTextStyle>
<dataForm:DataFormTextStyle FontAttributes="None" TextColor="{AppThemeBinding Light={StaticResource TextLightSecondary}, Dark={StaticResource TextDarkSecondary}}" />
</dataForm:SfDataForm.LabelTextStyle>
<dataForm:SfDataForm.EditorTextStyle>
<dataForm:DataFormTextStyle FontAttributes="None" TextColor="{AppThemeBinding Light={StaticResource TextLight}, Dark={StaticResource TextDark}}" />
</dataForm:SfDataForm.EditorTextStyle>
<dataForm:SfDataForm.Items>
<dataForm:DataFormAutoCompleteItem
DisplayMemberPath="Name"
FieldName="Store.Name"
ItemsSource="{Binding Path=StoreNames}"
SelectedValuePath="Id" />
<dataForm:DataFormDateItem FieldName="TransactionDate" />
<dataForm:DataFormNumericItem
AllowNull="False"
Culture="{x:Static sys:CultureInfo.InvariantCulture}"
FieldName="TotalAmount" />
<dataForm:DataFormTextItem FieldName="CurrencyCode" />
<dataForm:DataFormTextItem FieldName="Store.Country" />
</dataForm:SfDataForm.Items>
</dataForm:SfDataForm>

1 Reply

VM Vidyalakshmi Mani Syncfusion Team February 26, 2025 04:27 PM UTC

Hi Mihai,


Thank you for reaching out to us. You can obtain the selected item from `DataFormAutoCompleteItem` by handling the `SelectionChanged` event of `SfAutoComplete`. This involves using the `DataFormItemManager` class and overriding its `InitializeDataEditor` method. This method is invoked when a data editor is initialized for a form item. Within `InitializeDataEditor`, you can utilize the properties and events specific to the `AutoComplete` item (`SfAutocomplete `) as needed.


Here’s an example:  


 

this.dataForm.ItemManager = new DataFormItemManagerEditorExt();

 

public class DataFormItemManagerEditorExt : DataFormItemManager

{

    public override void InitializeDataEditor(DataFormItem dataFormItem, View editor)

    {

        if (editor is SfAutocomplete autoComplete)

        {

            autoComplete.SelectionChanged += AutoComplete_SelectionChanged;

        }

    }

 

    private void AutoComplete_SelectionChanged(object? sender, Syncfusion.Maui.Inputs.SelectionChangedEventArgs e)

    {

        var selectedItem = e.AddedItems?[0] as StoreData;

    }

}

 


For your convenience, we’ve attached a sample demonstrating this. Please review it and let us know if you need any further assistance.  


Regards,

Vidyalakshmi M.



Attachment: AutoCompleteEditorSelectionChanged_8bfcb565.zip

Loader.
Up arrow icon