Objective
I have created a Xamarin forms app using Syncfusion Controls and Set the Startup project as Universal Windows Platform(UWP). I have used Syncfusion SfAutoComplete Control and when run the app on Windows Phone Virtual device which has Windows 10 OS, It gave me and error saying…

Image 0 : Expected output
Cannot deserialize XBF metadata type list as ‘SfTextBoxExt’ was not found in namespace ‘Syncfusion.UI.Xaml.Controls.Input

Image 1 : Error
Here are the referenced class libraries in my current UWP project..

Image 2 : Project references in UWP
Reason
Then I looked for a solution and I found the reason ..
The reason was some DLL files(class libraries) are missing.
The DLL files are ..
- Syncfusion.SfInput.UWP.dll
- Syncfusion.SfShared.UWP
How to Solve the Issue ?
To Solve the issue we have to add those two dll files to the windows phone project..
So Lets add them..
- Go to references…

Image 3 : Click References to go to select dialague
2. Browse dll files from the Location that you have installed the Syncfusion dll files …

Image 4 : Select necessary dll(s) from directory and add to list
Then Select above dll files from the list and Click “OK”.

Image 5 : Select dll(s) from the list
3. Now you can see the selected dll files has been added to the references in the project…

Image 6 : dll(s) has been added
4. Then run the project and the app will run successfully…

Image 7 : App runs successsfully
References…
https://help.syncfusion.com/uwp/sftextboxext/viewing-suggestions-on-control-focus
https://help.syncfusion.com/xamarin/sfautocomplete/getting-started
https://www.syncfusion.com/products/xamarin/autocomplete
Thank You !
Code..
View XAML
<?xml version="1.0" encoding="utf-8" ?> <ContentPage xmlns="http://xamarin.com/schemas/2014/forms" xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" xmlns:autocomplete="clr-namespace:Syncfusion.SfAutoComplete.XForms;assembly=Syncfusion.SfAutoComplete.XForms" x:Class="Syncfusion2.View.AutoComplete"> <ContentPage.Content> <StackLayout VerticalOptions="Start" HorizontalOptions="Start" Padding="30"> <Label Text="Select Person..." FontSize="Large" TextColor="Gray"/> <autocomplete:SfAutoComplete x:Name="acData" DataSource="{Binding EmployeeCollection}" DisplayMemberPath="Name" AutoCompleteMode="Suggest" SelectedValuePath="ID"> <autocomplete:SfAutoComplete.ItemTemplate> <DataTemplate> <Grid> <Grid.RowDefinitions> <RowDefinition Height="Auto"/> </Grid.RowDefinitions> <Grid.ColumnDefinitions> <ColumnDefinition Width="30"/> <ColumnDefinition Width="*"/> </Grid.ColumnDefinitions> <Image Grid.Row="0" Grid.Column="0" Source="{Binding Image}"/> <Label Grid.Row="0" Grid.Column="1" Text="{Binding Name}" HorizontalOptions="FillAndExpand"/> </Grid> </DataTemplate> </autocomplete:SfAutoComplete.ItemTemplate> </autocomplete:SfAutoComplete> </StackLayout> </ContentPage.Content> </ContentPage>
View.cs
using System;using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks; using Xamarin.Forms;using Xamarin.Forms.Xaml;using Syncfusion2.ViewModel; namespace Syncfusion2.View{ [XamlCompilation(XamlCompilationOptions.Compile)] public partial class AutoComplete : ContentPage { EmployeeViewModel viewModel = new EmployeeViewModel(); public AutoComplete () { InitializeComponent (); this.BindingContext = viewModel; } }}
ViewModel
using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; using Syncfusion2.Model; namespace Syncfusion2.ViewModel { public class EmployeeViewModel { private ObservableCollection<Employee> employeeCollection; public ObservableCollection<Employee> EmployeeCollection { get { return employeeCollection; } set { employeeCollection = value; } } public EmployeeViewModel() { employeeCollection = new ObservableCollection<Employee>(); employeeCollection.Add(new Employee() { ID = 1, Name = "Eric", Image = "Lanka.png" }); employeeCollection.Add(new Employee() { ID = 2, Name = "James", Image = "Lanka.png" }); employeeCollection.Add(new Employee() { ID = 3, Name = "Jacob", Image = "Lanka.png" }); employeeCollection.Add(new Employee() { ID = 4, Name = "Lucas", Image = "Lanka.png" }); employeeCollection.Add(new Employee() { ID = 5, Name = "Mark", Image = "Lanka.png" }); employeeCollection.Add(new Employee() { ID = 6, Name = "Aldan", Image = "Lanka.png" }); employeeCollection.Add(new Employee() { ID = 7, Name = "Aldrin", Image = "Lanka.png" }); employeeCollection.Add(new Employee() { ID = 8, Name = "Alan", Image = "Lanka.png" }); employeeCollection.Add(new Employee() { ID = 9, Name = "Aaron", Image = "Lanka.png" }); } } }
UWP Project-> App.xaml -> OnLaunched Event
You have to add below code to the OnLaunched event in App.xaml.cs in UQP project to apply necessary functions of syncfusion controls.
for more information go to below link..
https://help.syncfusion.com/xamarin/sfautocomplete/getting-started
/// <summary> /// Invoked when the application is launched normally by the end user. Other entry points /// will be used such as when the application is launched to open a specific file. /// </summary> /// <param name="e">Details about the launch request and process.</param> protected override void OnLaunched(LaunchActivatedEventArgs e) { #if DEBUG if (System.Diagnostics.Debugger.IsAttached) { this.DebugSettings.EnableFrameRateCounter = true; } #endif Frame rootFrame = Window.Current.Content as Frame; if (rootFrame == null) { rootFrame = new Frame(); rootFrame.NavigationFailed += OnNavigationFailed; List<System.Reflection.Assembly> assembliesToInclude = new List<System.Reflection.Assembly>(); // Add all the renderer assemblies your app uses assembliesToInclude.Add(typeof(Syncfusion.SfAutoComplete.XForms.UWP.SfAutoCompleteRenderer).GetTypeInfo().Assembly); // Replace the Xamarin.Forms.Forms.Init(e); Xamarin.Forms.Forms.Init(e, assembliesToInclude); if (e.PreviousExecutionState == ApplicationExecutionState.Terminated) { //TODO: Load state from previously suspended application } // Place the frame in the current Window Window.Current.Content = rootFrame; } if (rootFrame.Content == null) { // When the navigation stack isn't restored navigate to the first page, // configuring the new page by passing required information as a navigation // parameter rootFrame.Navigate(typeof(MainPage), e.Arguments); } // Ensure the current window is active Window.Current.Activate(); }