This repository contains the sample to help you get started with the Syncfusion's Chat control for Xamarin.Forms.
Create a new BlankApp (Xamarin.Forms.NET Standard) application in Xamarin Studio or Visual Studio for Xamarin.Forms. Import the SfChat control namespace Syncfusion.XForms.Chat and set the SfChat control to the ContentPage.
using Syncfusion.XForms.Chat;
using System;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace GettingStarted
{
public partial class App : Application
{
public App()
{
InitializeComponent();
MainPage = new ChatPage();
}
}
}
<?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:d="http://xamarin.com/schemas/2014/forms/design"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:GettingStarted"
xmlns:sfChat="clr-namespace:Syncfusion.XForms.Chat;assembly=Syncfusion.SfChat.XForms"
mc:Ignorable="d"
x:Class="GettingStarted.ChatPage">
<ContentPage.BindingContext>
<local:GettingStartedViewModel/>
</ContentPage.BindingContext>
<ContentPage.Content>
<sfChat:SfChat x:Name="sfChat"
Messages="{Binding Messages}"
CurrentUser="{Binding CurrentUser}" />
</ContentPage.Content>
</ContentPage>
using Syncfusion.XForms.Chat;
using Xamarin.Forms;
using Xamarin.Forms.Xaml;
namespace GettingStarted
{
[XamlCompilation(XamlCompilationOptions.Compile)]
public partial class ChatPage : ContentPage
{
SfChat sfChat;
GettingStartedViewModel viewModel;
public ChatPage()
{
InitializeComponent();
sfChat = new SfChat();
viewModel = new GettingStartedViewModel();
sfChat.Messages = viewModel.Messages;
sfChat.CurrentUser = viewModel.CurrentUser;
this.Content = sfChat;
}
}
}
Create a view model class that contains the message collection and current user properties to be binded to the chat control.
public class GettingStartedViewModel : INotifyPropertyChanged
{
/// <summary>
/// Collection of messages in a conversation.
/// </summary>
private ObservableCollection<object> messages;
/// <summary>
/// current user of chat.
/// </summary>
private Author currentUser;
public GettingStartedViewModel()
{
this.messages = new ObservableCollection<object>();
this.currentUser = new Author() { Name = "Nancy", Avatar = "People_Circle16.png" };
this.GenerateMessages();
}
/// <summary>
/// Gets or sets the group message conversation.
/// </summary>
public ObservableCollection<object> Messages
{
get
{
return this.messages;
}
set
{
this.messages = value;
}
}
/// <summary>
/// Gets or sets the current author.
/// </summary>
public Author CurrentUser
{
get
{
return this.currentUser;
}
set
{
this.currentUser = value;
RaisePropertyChanged("CurrentUser");
}
}
/// <summary>
/// Property changed handler.
/// </summary>
public event PropertyChangedEventHandler PropertyChanged;
/// <summary>
/// Occurs when property is changed.
/// </summary>
/// <param name="propName">changed property name</param>
public void RaisePropertyChanged(string propName)
{
if (this.PropertyChanged != null)
{
this.PropertyChanged(this, new PropertyChangedEventArgs(propName));
}
}
private void GenerateMessages()
{
this.messages.Add(new TextMessage()
{
Author = currentUser,
Text = "Hi guys, good morning! I'm very delighted to share with you the news that our team is going to launch a new mobile application.",
ShowAvatar = true,
});
this.messages.Add(new TextMessage()
{
Author = new Author() { Name = "Andrea", Avatar = "People_Circle2.png" },
Text = "Oh! That's great.",
ShowAvatar = true,
});
this.messages.Add(new TextMessage()
{
Author = new Author() { Name = "Harrison", Avatar = "People_Circle14.png" },
Text = "That is good news.",
ShowAvatar = true,
});
this.messages.Add(new TextMessage()
{
Author = new Author() { Name = "Margaret", Avatar = "People_Circle7.png" },
Text = "What kind of application is it and when are we going to launch?",
ShowAvatar = true,
});
this.messages.Add(new TextMessage()
{
Author = currentUser,
Text = "A kind of Emergency Broadcast App.",
ShowAvatar = true,
});
}
}
- Visual Studio 2017 or Visual Studio for Mac.
- Xamarin add-ons for Visual Studio (available via the Visual Studio installer).
If you are facing path too long exception when building this example project, close Visual Studio and rename the repository to short and build the project.