| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | 
							- using System;
 
- using Syncfusion.XForms.PopupLayout;
 
- using Xamarin.CommunityToolkit.Extensions;
 
- using Xamarin.Forms;
 
- namespace InABox.Mobile
 
- {
 
-     public abstract class MobileView<TViewModel> : BaseMobileView 
 
-         where TViewModel : class, IMobileViewModel
 
-     {
 
-         private static readonly BindableProperty ViewModelProperty =
 
-             BindableProperty.Create(
 
-                 nameof(ViewModel), 
 
-                 typeof(TViewModel), 
 
-                 typeof(MobileView<TViewModel>), 
 
-                 null
 
-             );
 
-         
 
-         public TViewModel ViewModel
 
-         {
 
-             get => (TViewModel)GetValue(ViewModelProperty);
 
-             set
 
-             {
 
-                 if (ViewModel != null)
 
-                     ViewModel.Loaded -= ViewModel_OnLoaded;
 
-                 
 
-                 SetValue(ViewModelProperty,value);                
 
-                 
 
-                 if (ViewModel != null)
 
-                     ViewModel.Loaded += ViewModel_OnLoaded;
 
-             }
 
-         }
 
-         private bool _loaded = false;
 
-         
 
-         protected override void DoBindingContextChanged()
 
-         {
 
-             ViewModel = BindingContext as TViewModel;
 
-             Refresh();
 
-             _loaded = ViewModel != null;
 
-         }
 
-         
 
-         public void RefreshBindings()
 
-         {
 
-             var model = ViewModel;
 
-             BindingContext = null;
 
-             BindingContext = model;
 
-         }
 
-         
 
-         private void ViewModel_OnLoaded(object sender, MobileViewModelLoadedEventArgs args)
 
-         {
 
-             Refresh();
 
-         }
 
-         public abstract void Refresh();
 
-         
 
-         public event MobileViewChangedEvent Changed;
 
-         protected void DoChanged(params string[] properties)
 
-         {
 
-             if (_loaded)
 
-                 Changed?.Invoke(this, new MobileViewChangedEventArgs(String.Join('.',properties)));
 
-         }
 
-         
 
-         protected void ShowPopup(Func<View> view, PopupManagerConfiguration config = null) 
 
-             => PopupManager.ShowPopup(this, view, config);
 
-         
 
-         protected void DismissPopup() 
 
-             => PopupManager.DismissPopup();
 
-         
 
-     }
 
- }
 
 
  |