| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Diagnostics;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- using Xamarin.Forms;
- using DevDaysSpeakers.Model;
- using System.Net.Http;
- using Newtonsoft.Json;
- using System.Collections.ObjectModel;
- using System.Runtime.CompilerServices;
- using DevDaysSpeakers.Services;
- namespace DevDaysSpeakers.ViewModel
- {
- public class SpeakersViewModel : INotifyPropertyChanged
- {
- public ObservableCollection<Speaker> Speakers { get; set; }
- public Command GetSpeakersCommand { get; set; }
- public SpeakersViewModel()
- {
-
- Speakers = new ObservableCollection<Speaker>();
- GetSpeakersCommand = new Command(
- async () => await GetSpeakers(),
- () => !IsBusy);
- }
- bool busy;
- public bool IsBusy
- {
- get { return busy; }
- set
- {
- busy = value;
- OnPropertyChanged();
- GetSpeakersCommand.ChangeCanExecute();
- }
- }
- async Task GetSpeakers()
- {
- if (IsBusy)
- return;
- Exception error = null;
- try
- {
- IsBusy = true;
- var service = DependencyService.Get<AzureService>();
- var items = await service.GetSpeakers();
- Speakers.Clear();
- foreach (var item in items)
- Speakers.Add(item);
- }
- catch (Exception ex)
- {
- Debug.WriteLine("Error: " + ex);
- error = ex;
- }
- finally
- {
- IsBusy = false;
- }
- if (error != null)
- await Application.Current.MainPage.DisplayAlert("Error!", error.Message, "OK");
- }
- public event PropertyChangedEventHandler PropertyChanged;
- void OnPropertyChanged([CallerMemberName] string name = null)
- {
- var changed = PropertyChanged;
- if (changed == null)
- return;
- changed.Invoke(this, new PropertyChangedEventArgs(name));
- }
- }
- }
|