public static void DetailViewModelsPropertyChanged(BindableObject bindableObject, object oldValue, object newValue)
        {
            MasterDetailShellPage    masterDetailShellPage = (MasterDetailShellPage)bindableObject;
            IEnumerable <IViewModel> oldViewModels         = (IEnumerable <IViewModel>)oldValue;
            IEnumerable <IViewModel> newViewModels         = (IEnumerable <IViewModel>)newValue;

            if (oldViewModels != null)
            {
                if (oldViewModels is ObservableCollection <IViewModel> )
                {
                    (oldViewModels as ObservableCollection <IViewModel>).CollectionChanged -= masterDetailShellPage.MasterDetailShellPage_CollectionChanged;
                }
            }

            if (newViewModels != null)
            {
                masterDetailShellPage.CreateDetailPage();
                masterDetailShellPage.IsReady = false;

                if (newViewModels is ObservableCollection <IViewModel> )
                {
                    (newViewModels as ObservableCollection <IViewModel>).CollectionChanged += masterDetailShellPage.MasterDetailShellPage_CollectionChanged;
                }

                foreach (IViewModel viewModel in newViewModels)
                {
                    masterDetailShellPage.AddView(viewModel);
                }
            }
        }
        public static void MasterViewModelPropertyChanged(BindableObject bindableObject, object oldValue, object newValue)
        {
            MasterDetailShellPage masterDetailShellPage = (MasterDetailShellPage)bindableObject;
            IViewModel            newViewModel          = (IViewModel)newValue;

            if (newViewModel != null)
            {
                masterDetailShellPage.Master = ShellViewPage.Create(masterDetailShellPage.viewFactory.GetView(newViewModel));
            }
        }