Пример #1
0
        /// <summary>
        /// Updates <see cref="_internalMasterBehavior"/> according to <see cref="MasterDetailBehavior"/> set by the user and current screen orientation.
        /// </summary>
        void UpdateMasterBehavior()
        {
            var behavior = (_masterBehavior == MasterBehavior.Default) ? s_defaultMasterBehavior : _masterBehavior;

            // Screen orientation affects those 2 behaviors
            if (behavior == MasterBehavior.SplitOnLandscape ||
                behavior == MasterBehavior.SplitOnPortrait)
            {
                var orientation = Device.Info.CurrentOrientation;

                if ((orientation.IsLandscape() && behavior == MasterBehavior.SplitOnLandscape) ||
                    (orientation.IsPortrait() && behavior == MasterBehavior.SplitOnPortrait))
                {
                    behavior = MasterBehavior.Split;
                }
                else
                {
                    behavior = MasterBehavior.Popover;
                }
            }

            if (behavior != _internalMasterBehavior)
            {
                _internalMasterBehavior = behavior;
                ConfigureLayout();
            }
        }
Пример #2
0
        /// <summary>
        /// This method sets up the app navigation that uses Master Detail as the root
        /// </summary>
        /// <typeparam name="TViewModel">The type of IViewModel that backs the MasterPage of the app</typeparam>
        /// <typeparam name="RViewModel">The type of IViewModel that backs the DetailPage of the app</typeparam>
        /// <param name="masterBehavior">The MasterBehavior for the MasterDetailPage</param>
        /// <param name="masterDetailSetting">Option for for Navigation after Navigation in the Master Detail</param>
        /// <param name="wrapDetailWithNavigation">Option for wrapping the detail in a Navigation Page</param>
        public void SetupMasterDetailApp <TViewModel, RViewModel>(MasterBehavior masterBehavior = MasterBehavior.Default, MasterDetailSetting masterDetailSetting = MasterDetailSetting.CloseMasterAfterNavigation, bool wrapDetailWithNavigation = true) where TViewModel : class, IViewModel where RViewModel : class, IViewModel
        {
            var masterViewModel = Startup.ServiceProvider.GetService <TViewModel>();
            var detailViewModel = Startup.ServiceProvider.GetService <RViewModel>();

            SetupMasterDetailApp(masterViewModel, detailViewModel, masterBehavior, masterDetailSetting, wrapDetailWithNavigation);
        }
Пример #3
0
        async void OnNavigateExecuted(string target)
        {
            var targetUri       = string.Empty;
            var targetBehavior  = MasterBehavior;
            var targetPresented = false;

            if (string.Equals(target, "popover", StringComparison.OrdinalIgnoreCase))
            {
                targetUri       = $"{nameof(NavigationPage)}/{nameof(PopoverPage)}";
                targetBehavior  = MasterBehavior.Popover;
                targetPresented = false;
            }
            else if (string.Equals(target, "split", StringComparison.OrdinalIgnoreCase))
            {
                targetUri       = $"{nameof(NavigationPage)}/{nameof(SplitPage)}";
                targetBehavior  = MasterBehavior.Split;
                targetPresented = true;
            }

            if (string.IsNullOrEmpty(targetUri))
            {
                return;
            }

            await NavigationService.NavigateAsync(targetUri);

            MasterBehavior = targetBehavior;
            IsPresented    = targetPresented;
        }
Пример #4
0
        /// <summary>
        /// Updates <see cref="_internalMasterBehavior"/> according to <see cref="MasterDetailBehavior"/> set by the user and current screen orientation.
        /// </summary>
        void UpdateMasterBehavior()
        {
            var behavior = (_masterBehavior == MasterBehavior.Default) ? s_defaultMasterBehavior : _masterBehavior;

            // Screen orientation affects those 2 behaviors
            if (behavior == MasterBehavior.SplitOnLandscape ||
                behavior == MasterBehavior.SplitOnPortrait)
            {
                var rotation = Forms.Context.MainWindow.Rotation;

                if (((rotation == 90 || rotation == 270) && behavior == MasterBehavior.SplitOnLandscape) ||
                    ((rotation == 0 || rotation == 90) && behavior == MasterBehavior.SplitOnPortrait))
                {
                    behavior = MasterBehavior.Split;
                }
                else
                {
                    behavior = MasterBehavior.Popover;
                }
            }

            if (behavior != _internalMasterBehavior)
            {
                _internalMasterBehavior = behavior;

                ConfigureLayout();
            }
        }
Пример #5
0
        public Issue1461Page(MasterBehavior state, bool?initState)
        {
            var btn = new Button {
                Text = "hide me"
            };

            btn.Clicked += bnToggle_Clicked;
            Master       = new ContentPage {
                Title   = string.Format("Master sample for {0}", state),
                Icon    = "bank.png",
                Padding = Device.RuntimePlatform == Device.iOS ? new Thickness(5, 60, 5, 5) : new Thickness(5),
                Content =
                    new StackLayout {
                    Children =
                    {
                        new Label {
                            Text            = "Master Label",
                            AutomationId    = "Master_Label",
                            BackgroundColor = Color.Gray
                        },
                        btn
                    },
                    BackgroundColor = Color.WhiteSmoke
                },
                BackgroundColor = Color.Gray
            };

            if (initState.HasValue)
            {
                _showButton = initState.Value;
            }

            var lbl = new Label {
                HorizontalOptions = LayoutOptions.End,
                BindingContext    = this
            };

            lbl.SetBinding(Label.TextProperty, "IsPresented");

            var bnToggle = new Button {
                Text = "Toggle IsPresented",
            };

            var bnGoBack = new Button {
                Text = "Go Back",
            };

            bnGoBack.Clicked += bnGoBack_Clicked;
            bnToggle.Clicked += bnToggle_Clicked;

            Detail = new NavigationPage(new ContentPage {
                Title   = "Detail Title",
                Content = new StackLayout {
                    Spacing = 10, Children = { lbl, bnToggle, bnGoBack }
                }
            });

            MasterBehavior = state;
        }
Пример #6
0
        public TFluent MasterBehavior(MasterBehavior behavior)
        {
            this.BuilderActions.Add(masterDetailPage => {
                masterDetailPage.MasterBehavior = behavior;
            });

            return(this as TFluent);
        }
 public int AddUpdateBehavior([FromBody] MasterBehavior behavior)
 {
     if (behavior.Behavior_ID <= 0)
     {
         return(BehaviorService.AddBehavior(behavior));
     }
     else
     {
         return(BehaviorService.UpdateBehavior(behavior));
     }
 }
Пример #8
0
        private void OpenDetailPage(OpenDetailPageMessage message)
        {
            Detail = DependencyRegistry.ResolveDetailPage(message.Data);

            if (!MasterBehavior.Equals(MasterBehavior.Split) &&
                !MasterBehavior.Equals(MasterBehavior.SplitOnLandscape) &&
                !MasterBehavior.Equals(MasterBehavior.SplitOnPortrait))
            {
                IsPresented = false;
            }
        }
Пример #9
0
        public void Handle(OpenDetailPageMessage message)
        {
            Detail = _detailPageResolver.Resolve(message.Data);

            if (!MasterBehavior.Equals(MasterBehavior.Split) &&
                !MasterBehavior.Equals(MasterBehavior.SplitOnLandscape) &&
                !MasterBehavior.Equals(MasterBehavior.SplitOnPortrait))
            {
                IsPresented = false;
            }
        }
Пример #10
0
        public virtual bool ShouldShowToolbarButton()
        {
            if (Device.Idiom == TargetIdiom.Phone)
            {
                return(true);
            }

            MasterBehavior    behavior    = MasterBehavior;
            DeviceOrientation orientation = Device.Info.CurrentOrientation;

            bool isSplitOnLandscape = (behavior == MasterBehavior.SplitOnLandscape || behavior == MasterBehavior.Default) && orientation.IsLandscape();
            bool isSplitOnPortrait  = behavior == MasterBehavior.SplitOnPortrait && orientation.IsPortrait();

            return(behavior != MasterBehavior.Split && !isSplitOnLandscape && !isSplitOnPortrait);
        }
        private MasterBehaviorType GetMasterBehavior(MasterBehavior masterBehavior)
        {
            switch (masterBehavior)
            {
            case MasterBehavior.Split:
            case MasterBehavior.SplitOnLandscape:
            case MasterBehavior.SplitOnPortrait:
                return(MasterBehaviorType.Split);

            case MasterBehavior.Popover:
                return(MasterBehaviorType.Popover);

            case MasterBehavior.Default:
                return(MasterBehaviorType.Default);

            default:
                throw new ArgumentOutOfRangeException(nameof(masterBehavior));
            }
        }
Пример #12
0
        public static int UpdateBehavior(MasterBehavior behavior)
        {
            int result = 0;
            EntityConnectionStringBuilder entityBuilder = new EntityConnectionStringBuilder(Global.jSSEConn);

            //Parameter Names
            string[] JsseParams = new[] { "BehaviorID", "Behavior", "BehaviorDesc", "CreatedBy", "Active", "CategoryID", "BehaviorTypeID", "MajorGroupID", "OrgID" };
            try
            {
                var JsseValues = new object[] { behavior.Behavior_ID, behavior.Behavior, behavior.BehaviorDesc, behavior.ModifiedBy, behavior.IsActive, behavior.Category.Category_ID,
                                                behavior.BehaviorType.BehaviorType_ID, behavior.MajorGroup_ID, behavior.Org_ID };
                var jsseMain = DBGeneric.ExecStoredProcedure(entityBuilder.ProviderConnectionString, "dbo.[usp_JSSE_InsertUpdateBehavior]",
                                                             JsseParams, JsseValues);
            }
            catch
            {
                throw;
            }
            return(result);
        }
Пример #13
0
 public static T MasterBehavior <T>(this T masterdetailpage, MasterBehavior masterBehavior) where T : IRxMasterDetailPage
 {
     masterdetailpage.MasterBehavior = masterBehavior;
     return(masterdetailpage);
 }
Пример #14
0
 public InnerDelegate(MasterBehavior masterPresentedDefaultState)
 {
     _masterPresentedDefaultState = masterPresentedDefaultState;
 }
			public InnerDelegate(MasterBehavior masterPresentedDefaultState)
			{
				_masterPresentedDefaultState = masterPresentedDefaultState;
			}
Пример #16
0
        /// <summary>
        /// This method sets up the app navigation that uses Master Detail as the root
        /// </summary>
        /// <typeparam name="TViewModel">The type of IViewModel that backs the MasterPage of the app</typeparam>
        /// <typeparam name="RViewModel">The type of IViewModel that backs the DetailPage of the app</typeparam>
        /// <param name="masterViewModel">The viewmodel for masterpage</param>
        /// <param name="initialDetailViewModel">The viewmodel for the detailpage</param>
        /// <param name="masterBehavior">The MasterBehavior for the MasterDetailPage</param>
        /// <param name="masterDetailSetting">Option for for Navigation after Navigation in the Master Detail</param>
        /// <param name="wrapDetailWithNavigation">Option for wrapping the detail in a Navigation Page</param>
        public void SetupMasterDetailApp <TViewModel, RViewModel>(TViewModel masterViewModel, RViewModel initialDetailViewModel, MasterBehavior masterBehavior = MasterBehavior.Default, MasterDetailSetting masterDetailSetting = MasterDetailSetting.CloseMasterAfterNavigation, bool wrapDetaiWithNavigation = true) where TViewModel : class, IViewModel where RViewModel : class, IViewModel
        {
            var master = viewFactory.Resolve(masterViewModel);
            var detail = wrapDetaiWithNavigation
                ? new NavigationPage(viewFactory.Resolve(initialDetailViewModel))
                : viewFactory.Resolve(initialDetailViewModel);

            if (string.IsNullOrWhiteSpace(master.Title))
            {
                master.Title = "Menu";
            }

            var masterDetailPage = new MasterDetailPage
            {
                Master         = master,
                Detail         = detail,
                MasterBehavior = masterBehavior
            };

            MasterDetailSetting          = masterDetailSetting;
            Application.Current.MainPage = masterDetailPage;
        }
 public static MasterDetailPage MasterBehavior(this MasterDetailPage page, MasterBehavior behavior)
 {
     page.MasterBehavior = behavior;
     return(page);
 }
Пример #18
0
		public Issue1461Page (MasterBehavior state, bool? initState)
		{

			var btn = new Button { Text = "hide me" };
			btn.Clicked += bnToggle_Clicked;
			Master = new ContentPage {
				Title = string.Format ("Master sample for {0}", state),
				Icon = "bank.png",
				Padding = Device.OnPlatform (new Thickness (5, 60, 5, 5), 5, 5),
				Content = 
					new StackLayout { Children = {
						new Label {
							Text = "Master Label",
							AutomationId = "Master_Label",
							BackgroundColor = Color.Gray
						},
						btn
					}
				},
				//BackgroundColor = Color.Red
			};

			if(initState.HasValue)
				_showButton = initState.Value;

			var lbl = new Label {
				HorizontalOptions =   LayoutOptions.End, 
				BindingContext = this
			};
			lbl.SetBinding (Label.TextProperty, "IsPresented");

			var bnToggle = new Button {
				Text = "Toggle IsPresented",
			};

			var bnGoBack = new Button {
				Text = "Go Back",
			};

			bnGoBack.Clicked += bnGoBack_Clicked;
			bnToggle.Clicked += bnToggle_Clicked;

			Detail = new NavigationPage( new ContentPage {
				Title = "Detail Title",
				Content = new StackLayout{ Spacing=10, Children= { lbl, bnToggle, bnGoBack} }
			});

			MasterBehavior = state;
		}