|
public class ContactsViewModel : INotifyPropertyChanged
{
...
public DataSource ListDataSource { get; set; }
public ContactsViewModel()
{
DataServices = new RestService();
ListDataSource = new DataSource();
UserInfo = new ObservableCollection<UserDetails>();
}
private void AddDataSource()
{
ListDataSource.Source = UserInfo;
ListDataSource.GroupDescriptors.Clear();
ListDataSource.SortDescriptors.Clear();
ListDataSource.GroupDescriptors.Add(new GroupDescriptor() { PropertyName = "ClientName" });
ListDataSource.SortDescriptors.Add(new SortDescriptor() { PropertyName = "LastMessageDate", Direction = Syncfusion.DataSource.ListSortDirection.Descending });
ListDataSource.SortDescriptors.Add(new SortDescriptor() { PropertyName = "ClientName", Direction = Syncfusion.DataSource.ListSortDirection.Ascending });
}
public async void OnIsActive()
{
ShowShimmer = true;
await Task.Delay(2000);
try
{
var _messages = await DataServices.GetDataAsync();
...
if (_messages != null)
{
UserInfo = _messages;
}
}
catch (Exception ex)
{
ShowShimmer = false;
throw;
}
finally
{
AddDataSource();
ShowShimmer = false;
}
}
} |
|
public class SfListViewBehavior : Behavior<SfListView>
{
SfListView ListView;
protected override void OnAttachedTo(SfListView bindable)
{
ListView = bindable;
ListView.BindingContextChanged += ListView_BindingContextChanged;
base.OnAttachedTo(bindable);
}
private void ListView_BindingContextChanged(object sender, EventArgs e)
{
var bc = ListView.BindingContext as ContactsViewModel;
if (bc != null)
{
ListView.DataSource = bc.ListDataSource;
ListView.ItemsSource = bc.ListDataSource.Source;
}
}
} |