ContactSelectionPage.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334
  1. using System;
  2. using System.Linq;
  3. using InABox.Mobile;
  4. using Xamarin.Forms;
  5. namespace PRS.Mobile
  6. {
  7. public class ContactSelectionPage : SelectionPage
  8. {
  9. public ContactSelectionPage(Action<ContactShell> action)
  10. : base(
  11. (string)"Select Contact",
  12. (SelectionPageMode)SelectionPageMode.Immediate,
  13. (columns, filters) =>
  14. {
  15. columns
  16. .BeginUpdate()
  17. .Clear()
  18. .Add(new MobileGridTextColumn<ContactShell>() { Column = x => x.Name, Width = GridLength.Star })
  19. .Add(new MobileGridTextColumn<ContactShell>() { Column = x => x.Street, Width = GridLength.Auto })
  20. .Add(new MobileGridTextColumn<ContactShell>() { Column = x => x.City, Width = GridLength.Auto })
  21. .EndUpdate();
  22. },
  23. (args) =>
  24. {
  25. App.Data.Contacts.SelectFilter(args.Filter);
  26. var result = App.Data.Contacts.Refresh(args.Force);
  27. args.LastUpdated = App.Data.Contacts.LastUpdated;
  28. return result;
  29. },
  30. (items) => action?.Invoke(items.FirstOrDefault() as ContactShell)
  31. ) { }
  32. }
  33. }