SpeakersPage.xaml.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6. using Xamarin.Forms;
  7. using DevDaysSpeakers.Model;
  8. using DevDaysSpeakers.ViewModel;
  9. using AppServiceHelpers;
  10. using AppServiceHelpers.Abstractions;
  11. namespace DevDaysSpeakers.View
  12. {
  13. public partial class SpeakersPage : ContentPage
  14. {
  15. SpeakersViewModel vm;
  16. public SpeakersPage(IEasyMobileServiceClient client)
  17. {
  18. InitializeComponent();
  19. vm = new SpeakersViewModel(client);
  20. BindingContext = vm;
  21. ButtonSpeakers.Clicked += ButtonSpeakers_Clicked;
  22. ListViewSpeakers.ItemSelected += ListViewSpeakers_ItemSelected;
  23. }
  24. private async void ListViewSpeakers_ItemSelected(object sender, SelectedItemChangedEventArgs e)
  25. {
  26. var speaker = e.SelectedItem as Speaker;
  27. if (speaker == null)
  28. return;
  29. await Navigation.PushAsync(new DetailsPage(speaker));
  30. ListViewSpeakers.SelectedItem = null;
  31. }
  32. private async void ButtonSpeakers_Clicked(object sender, EventArgs e)
  33. {
  34. Exception ex = null;
  35. try
  36. {
  37. ButtonSpeakers.IsEnabled = false;
  38. await vm.GetSpeakers();
  39. }
  40. catch(Exception error)
  41. {
  42. ex = error;
  43. }
  44. finally
  45. {
  46. ButtonSpeakers.IsEnabled = true;
  47. }
  48. if (ex != null)
  49. await DisplayAlert("Error!", ex.Message, "OK");
  50. }
  51. }
  52. }