MobileViewModel.cs 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. using InABox.Core;
  2. using Xamarin.Forms;
  3. namespace InABox.Mobile
  4. {
  5. public abstract class MobileViewModel : BindableObject, IMobileViewModel
  6. {
  7. public Color SelectedColor => XF.Material.Forms.Material.Color.Surface;
  8. public Color SelectedTextColor => XF.Material.Forms.Material.Color.OnSurface;
  9. public Color UnselectedColor => XF.Material.Forms.Material.Color.Primary;
  10. public Color UnselectedTextColor => XF.Material.Forms.Material.Color.OnPrimary;
  11. public event MobileViewModelLoadedEvent Loaded;
  12. protected void OnLoaded()
  13. => Loaded?.Invoke(this, new MobileViewModelLoadedEventArgs());
  14. }
  15. public abstract class MobileViewModel<TEntity,TShell> : MobileViewModel
  16. where TEntity : Entity, IRemotable, IPersistent
  17. where TShell : IShell<TEntity>
  18. {
  19. private TShell _item;
  20. public TShell Item
  21. {
  22. get => _item;
  23. set
  24. {
  25. _item = value;
  26. DoLoad();
  27. OnLoaded();
  28. }
  29. }
  30. protected abstract void DoLoad();
  31. }
  32. }