SelectionPage.xaml.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using System;
  2. using InABox.Mobile;
  3. using Xamarin.Forms;
  4. using Xamarin.Forms.Xaml;
  5. namespace PRS.Mobile
  6. {
  7. [XamlCompilation(XamlCompilationOptions.Compile)]
  8. public partial class SelectionPage
  9. {
  10. private SelectionPageMode _mode;
  11. private Action<MobileGridColumns, MobileButtonStripItems> _configure;
  12. private Func<SelectionViewRefreshArgs,object> _refresh;
  13. private Action<object[]> _selected;
  14. public SelectionPage(
  15. String title,
  16. SelectionPageMode mode,
  17. Action<MobileGridColumns, MobileButtonStripItems> configure,
  18. Func<SelectionViewRefreshArgs,object> refresh,
  19. Action<object[]> selected)
  20. {
  21. _mode = mode;
  22. _configure = configure;
  23. _refresh = refresh;
  24. _selected = selected;
  25. InitializeComponent();
  26. Title = title;
  27. _selection.Mode = mode;
  28. if (_mode != SelectionPageMode.Immediate)
  29. {
  30. ToolbarItems.Clear();
  31. ToolbarItems.Add(new ToolbarItem("Select", null, DoSelectItems));
  32. }
  33. ProgressVisible = true;
  34. }
  35. protected override void OnAppearing()
  36. {
  37. _selection.Load();
  38. base.OnAppearing();
  39. }
  40. private void DoSelectItems()
  41. {
  42. _selected?.Invoke(_selection.SelectedItems);
  43. Navigation.PopAsync();
  44. }
  45. private void _selection_OnConfigure(object sender, SelectionViewConfigureArgs args)
  46. {
  47. _configure?.Invoke(args.Columns, args.Filters);
  48. }
  49. private object _selection_OnRefresh(object sender, SelectionViewRefreshArgs args)
  50. {
  51. ProgressVisible = true;
  52. var result = _refresh?.Invoke(args);
  53. ProgressVisible = false;
  54. return result;
  55. }
  56. private void _selection_OnSelectionChanged(object sender, SelectionViewSelectionChangedArgs args)
  57. {
  58. if (_mode == SelectionPageMode.Immediate)
  59. DoSelectItems();
  60. }
  61. }
  62. }