/// <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(); } }
/// <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); }
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; }
/// <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(); } }
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; }
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)); } }
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; } }
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; } }
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)); } }
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); }
public static T MasterBehavior <T>(this T masterdetailpage, MasterBehavior masterBehavior) where T : IRxMasterDetailPage { masterdetailpage.MasterBehavior = masterBehavior; return(masterdetailpage); }
public InnerDelegate(MasterBehavior masterPresentedDefaultState) { _masterPresentedDefaultState = masterPresentedDefaultState; }
/// <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); }
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; }