public void TestMasterSetNull () { MasterDetailPage page = new MasterDetailPage (); var child = new ContentPage {Content = new Label (), Title = "Foo"}; page.Master = child; Assert.Throws<ArgumentNullException> (() => { page.Master = null; }); }
public void TestMasterSetter () { MasterDetailPage page = new MasterDetailPage (); var child = new ContentPage {Content = new Label (), Title = "Foo"}; page.Master = child; Assert.AreEqual (child, page.Master); }
public void TestConstructor () { MasterDetailPage page = new MasterDetailPage (); Assert.Null (page.Master); Assert.Null (page.Detail); }
public NavBarTitleTestPage () { var navTab = new NavigationPage { Title = "Hello 1 nav"}; navTab.PushAsync (GetPage (navTab)); var stackPages = new StackLayout (); var btn3 = new Button { Text = "tab", Command = new Command (async () => { var tabbed = new TabbedPage { Title = "Main Tab" }; tabbed.Children.Add (navTab); tabbed.Children.Add (GetPage (navTab)); await Navigation.PushModalAsync (tabbed); }) }; var btn4 = new Button { Text = "mdp", Command = new Command (async () => { var newNav = new NavigationPage { Title = "Hello 1 nav", BarBackgroundColor = Color.Pink, BarTextColor = Color.Blue }; var mdp = new MasterDetailPage (); await newNav.PushAsync (GetPage (newNav)); mdp.Master = new ContentPage { Title = "Master", BackgroundColor = Color.Red, Content = new Button { Text = "new", Command = new Command (() => { mdp.Detail = new ContactsPage { Title = "hello 3" }; mdp.IsPresented = false; }) } }; mdp.Detail = newNav; await Navigation.PushModalAsync (mdp); }) }; var btn5 = new Button { Text = "nav", Command = new Command (async () => { var newNav = new NavigationPage { Title = "Hello 1 nav" }; await newNav.PushAsync (GetPage (newNav)); await Navigation.PushModalAsync (newNav); }) }; var btn6 = new Button { Text = "change nav", Command = new Command (() => { (Parent as NavigationPage).BarBackgroundColor = Color.Blue; (Parent as NavigationPage).BarTextColor = Color.Pink; }) }; stackPages.Children.Add (btn3); stackPages.Children.Add (btn4); stackPages.Children.Add (btn5); stackPages.Children.Add (btn6); Content = stackPages; }
public void SetElement(VisualElement element) { MasterDetailPage oldElement = _page; _page = element as MasterDetailPage; _detailLayout = new MasterDetailContainer(_page, false, Context) { LayoutParameters = new LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent) }; _masterLayout = new MasterDetailContainer(_page, true, Context) { LayoutParameters = new LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent) { Gravity = (int)GravityFlags.Start } }; AddView(_detailLayout); AddView(_masterLayout); var activity = Context as Activity; activity.ActionBar.SetDisplayShowHomeEnabled(true); activity.ActionBar.SetHomeButtonEnabled(true); UpdateBackgroundColor(_page); UpdateBackgroundImage(_page); OnElementChanged(oldElement, element); if (oldElement != null) ((IMasterDetailPageController)oldElement).BackButtonPressed -= OnBackButtonPressed; if (_page != null) MasterDetailPageController.BackButtonPressed += OnBackButtonPressed; if (Tracker == null) Tracker = new VisualElementTracker(this); _page.PropertyChanged += HandlePropertyChanged; _page.Appearing += MasterDetailPageAppearing; _page.Disappearing += MasterDetailPageDisappearing; UpdateMaster(); UpdateDetail(); Device.Info.PropertyChanged += DeviceInfoPropertyChanged; SetGestureState(); Presented = _page.IsPresented; AddDrawerListener(this); if (element != null) element.SendViewInitialized(this); if (element != null && !string.IsNullOrEmpty(element.AutomationId)) ContentDescription = element.AutomationId; }
public App() { _testCloudService = DependencyService.Get<ITestCloudService>(); InitInsights(); //MainPage = new MainPageLifeCycleTests(); MainPage = new MasterDetailPage { Master = new ContentPage { Title = "Master", BackgroundColor = Color.Red }, Detail = CoreGallery.GetMainPage() }; }
protected override void Init () { s_mdp = this; _slidingPage = new SliderMenuPage { Title = "Menu", BackgroundColor = Color.FromHex ("1e1e1e") }; _slidingPage.MenuListView.ItemTapped += (sender, e) => OnMenuSelected (e.Item as SliderMenuItem); Padding = new Thickness (0); Master = _slidingPage; OnMenuSelected (_slidingPage.MenuListView.SelectedItem as SliderMenuItem); }
public void TestMasterChanged () { MasterDetailPage page = new MasterDetailPage (); var child = new ContentPage {Content = new Label (), Title = "Foo"}; bool changed = false; page.PropertyChanged += (sender, e) => { if (e.PropertyName == "Master") changed = true; }; page.Master = child; Assert.True (changed); }
public MasterPage (MasterDetailPage masterPage) { _masterPage = masterPage; Title = "Menu"; for (int i = 0; i < 5; i++ ) { if (i == 0) _items = new List<string>(); _items.Add("Menu Items"); } var list = new ListView { ItemsSource = _items, RowHeight = 100, HasUnevenRows = true }; list.ItemSelected += list_ItemSelected; Content = list; }
public RootTabbedMDPNavigationContentPage (string hierarchy) { AutomationId = hierarchy + "PageId"; var tabOne = new MasterDetailPage { Title = "Testing 123", Master = new ContentPage { Title = "Testing 123", Content = new StackLayout { Children = { new Label {Text = "Master"}, new AbsoluteLayout { BackgroundColor = Color.Red, VerticalOptions = LayoutOptions.FillAndExpand, HorizontalOptions = LayoutOptions.FillAndExpand }, new Button {Text = "Button"} } } }, Detail = new NavigationPage (new ContentPage { Title = "Testing 123", Content = new SwapHierachyStackLayout (hierarchy) }) }; var tabTwo = new ContentPage { Title = "Testing 345", Content = new StackLayout { Children = { new Label { Text = "Hello" }, new AbsoluteLayout { BackgroundColor = Color.Red, VerticalOptions = LayoutOptions.FillAndExpand, HorizontalOptions = LayoutOptions.FillAndExpand } } } }; Children.Add (tabOne); Children.Add (tabTwo); }
public static MasterDetailPage IsGestureEnabled(this MasterDetailPage page, bool enabled) { page.IsGestureEnabled = enabled; return(page); }
public MasterDetailContainer(MasterDetailPage parent, bool isMaster, Context context) : base(parent, isMaster, context) { Id = FormsAppCompatActivity.GetUniqueId(); _parent = parent; _isMaster = isMaster; }
public void SetElement(VisualElement element) { MasterDetailPage oldElement = _page; _page = element as MasterDetailPage; _detailLayout = new MasterDetailContainer(_page, false, Context) { LayoutParameters = new LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent) }; _masterLayout = new MasterDetailContainer(_page, true, Context) { LayoutParameters = new LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent) { Gravity = (int)GravityFlags.Start } }; AddView(_detailLayout); AddView(_masterLayout); var activity = Context as Activity; activity.ActionBar.SetDisplayShowHomeEnabled(true); activity.ActionBar.SetHomeButtonEnabled(true); UpdateBackgroundColor(_page); UpdateBackgroundImage(_page); OnElementChanged(oldElement, element); if (oldElement != null) { ((IMasterDetailPageController)oldElement).BackButtonPressed -= OnBackButtonPressed; } if (_page != null) { MasterDetailPageController.BackButtonPressed += OnBackButtonPressed; } if (Tracker == null) { Tracker = new VisualElementTracker(this); } _page.PropertyChanged += HandlePropertyChanged; _page.Appearing += MasterDetailPageAppearing; _page.Disappearing += MasterDetailPageDisappearing; UpdateMaster(); UpdateDetail(); Device.Info.PropertyChanged += DeviceInfoPropertyChanged; SetGestureState(); Presented = _page.IsPresented; AddDrawerListener(this); if (element != null) { element.SendViewInitialized(this); } if (element != null && !string.IsNullOrEmpty(element.AutomationId)) { ContentDescription = element.AutomationId; } }
void FindParentMasterDetail() { var parentPages = ((Page)Element).GetParentPages(); var masterDetail = parentPages.OfType<MasterDetailPage>().FirstOrDefault(); if (masterDetail != null && parentPages.Append((Page)Element).Contains(masterDetail.Detail)) _parentMasterDetailPage = masterDetail; }
public MasterDetailContainer(MasterDetailPage parent, bool isMaster, Context context) : base(context) { _parent = parent; _isMaster = isMaster; }
void IVisualElementRenderer.SetElement(VisualElement element) { MasterDetailPage oldElement = Element; MasterDetailPage newElement = Element = element as MasterDetailPage; if (oldElement != null) { ((IMasterDetailPageController)oldElement).BackButtonPressed -= OnBackButtonPressed; oldElement.PropertyChanged -= HandlePropertyChanged; oldElement.Appearing -= MasterDetailPageAppearing; oldElement.Disappearing -= MasterDetailPageDisappearing; } if (newElement != null) { if (_detailLayout == null) { _detailLayout = new MasterDetailContainer(newElement, false, Context) { LayoutParameters = new LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent) }; _masterLayout = new MasterDetailContainer(newElement, true, Context) { LayoutParameters = new LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent) { Gravity = (int)GravityFlags.Start } }; if (_fragmentManager != null) { _detailLayout.SetFragmentManager(_fragmentManager); _masterLayout.SetFragmentManager(_fragmentManager); } AddView(_detailLayout); AddView(_masterLayout); Device.Info.PropertyChanged += DeviceInfoPropertyChanged; AddDrawerListener(this); } UpdateBackgroundColor(newElement); UpdateBackgroundImage(newElement); UpdateMaster(); UpdateDetail(); ((IMasterDetailPageController)newElement).BackButtonPressed += OnBackButtonPressed; newElement.PropertyChanged += HandlePropertyChanged; newElement.Appearing += MasterDetailPageAppearing; newElement.Disappearing += MasterDetailPageDisappearing; SetGestureState(); Presented = newElement.IsPresented; newElement.SendViewInitialized(this); } OnElementChanged(oldElement, newElement); // Make sure to initialize this AFTER event is fired if (_tracker == null) { _tracker = new VisualElementTracker(this); } }
public void TestSetDetailBounds () { var page = new MasterDetailPage { Master = new ContentPage {Content = new View (), Title = "Foo"}, Detail = new ContentPage {Content = new View ()} }; ((IMasterDetailPageController)page).DetailBounds = new Rectangle (0, 0, 100, 100); Assert.AreEqual (new Rectangle (0, 0, 100, 100), page.Detail.Bounds); Assert.AreEqual (new Rectangle (0, 0, 100, 100), ((IMasterDetailPageController)page).DetailBounds); }
public void TestDetailSetter () { MasterDetailPage page = new MasterDetailPage (); var child = new ContentPage {Content = new Label ()}; page.Detail = child; Assert.AreEqual (child, page.Detail); }
public void TestDetailSetNull () { MasterDetailPage page = new MasterDetailPage (); var child = new ContentPage {Content = new Label ()}; page.Detail = child; Assert.Throws<ArgumentNullException> ( () => { page.Detail = null; }); }
public void ThrowsInSetMasterBoundsWithNullMaster () { var page = new MasterDetailPage { Detail = new ContentPage {Content = new View ()}, IsPlatformEnabled = true, Platform = new UnitPlatform () }; Assert.Throws<InvalidOperationException> (() => ((IMasterDetailPageController)page).MasterBounds = new Rectangle(0, 0, 200, 200)); }
public void ThorwsInLayoutChildrenWithNullMaster () { var page = new MasterDetailPage { Detail = new ContentPage { Content = new View (), IsPlatformEnabled = true }, IsPlatformEnabled = true, Platform = new UnitPlatform () }; Assert.Throws<InvalidOperationException> (() => page.Layout (new Rectangle(0, 0, 200, 200))); }
public void ThorwsInSetIsPresentOnSplitPortraitModeOnTablet () { Device.Idiom = TargetIdiom.Tablet; Device.Info.CurrentOrientation = DeviceOrientation.Portrait; var page = new MasterDetailPage { Master = new ContentPage { Content = new View (), IsPlatformEnabled = true, Title = "Foo" }, Detail = new ContentPage { Content = new View (), IsPlatformEnabled = true }, IsPlatformEnabled = true, Platform = new UnitPlatform (), MasterBehavior = MasterBehavior.SplitOnPortrait }; Assert.Throws<InvalidOperationException> (() => page.IsPresented = false); }
public void ThrowsExceptionWhenAddingAlreadyParentedMaster () { var master = new ContentPage { Title = "Foo" }; // give master a parent var nav = new NavigationPage (master); var mdp = new MasterDetailPage (); Assert.Throws<InvalidOperationException> (() => mdp.Master = master); }
public void TestSetIsPresentedOnPopoverMode () { Device.Info.CurrentOrientation = DeviceOrientation.Landscape; var page = new MasterDetailPage { Master = new ContentPage { Content = new View (), IsPlatformEnabled = true, Title = "Foo" }, Detail = new ContentPage { Content = new View (), IsPlatformEnabled = true }, IsPlatformEnabled = true, Platform = new UnitPlatform (), MasterBehavior = MasterBehavior.Popover }; page.IsPresented = true; Assert.AreEqual (true, page.IsPresented); }
public static MasterDetailPage Master(this MasterDetailPage page, Page master) { page.Master = master; return(page); }
public void TestLayoutChildren () { var page = new MasterDetailPage { Master = new ContentPage { Content = new View (), IsPlatformEnabled = true, Title = "Foo" }, Detail = new ContentPage { Content = new View (), IsPlatformEnabled = true }, IsPlatformEnabled = true, Platform = new UnitPlatform () }; ((IMasterDetailPageController)page).MasterBounds = new Rectangle (0, 0, 100, 200); ((IMasterDetailPageController)page).DetailBounds = new Rectangle (0, 0, 100, 100); page.Master.Layout (new Rectangle(0, 0, 1, 1)); page.Detail.Layout (new Rectangle(0, 0, 1, 1)); page.Layout (new Rectangle (0, 0, 200, 200)); Assert.AreEqual (new Rectangle (0, 0, 100, 200), page.Master.Bounds); Assert.AreEqual (new Rectangle (0, 0, 100, 100), page.Detail.Bounds); }
public static MasterDetailPage Detail(this MasterDetailPage page, Page detail) { page.Detail = detail; return(page); }
public ManagerAssetView(ViewAsset Viewasset, ScanResponce scanResponce) { InitializeComponent(); var tapGestureRecognizer = new TapGestureRecognizer(); tapGestureRecognizer.Tapped += (s, e) => { try { MasterDetailPage ParentPage = (MasterDetailPage)this.Parent; ParentPage.IsPresented = (ParentPage.IsPresented == false) ? true : false; } catch (Exception ex) { var msg = ex.Message; } }; img.GestureRecognizers.Add(tapGestureRecognizer); // AssetEntry.Text = ScanResponce.assetId; if (Viewasset != null) { AssetEntry.Text = Viewasset.assetId; DescriptionEntry.Text = Viewasset.description; StatusEntry.Text = Viewasset.status; timeScannedEntry.Text = Viewasset.timeLastScanned; timeUpdatedEntry.Text = Viewasset.timeLastUpdated; commentsEntry.Text = Viewasset.comment; if (Viewasset.assignee != null) { //String[] Stringbreak = Viewasset.assignee.Split('#'); AsigneeEntry.Text = Viewasset.assignee; assign.Text = "Return Asset"; lstview.IsVisible = false; } else { } } if (scanResponce != null) { AssetEntry.Text = scanResponce.assetId; DescriptionEntry.Text = scanResponce.description; StatusEntry.Text = scanResponce.status; timeScannedEntry.Text = scanResponce.timeLastScanned; timeUpdatedEntry.Text = scanResponce.timeLastUpdated; commentsEntry.Text = scanResponce.comment; if (scanResponce.assignee != null) { String[] Stringbreak = scanResponce.assignee.Split('#'); AsigneeEntry.Text = Stringbreak[1]; assign.Text = "Return Asset"; lstview.IsVisible = false; } else { } } lstview.ItemSelected += async(object sender, SelectedItemChangedEventArgs e) => { if (e.SelectedItem == null) { return; } Users item = (Users)e.SelectedItem; AsigneeEntry.Text = item.email; lstview.IsVisible = false; if (Validate = true) { DateTime now = DateTime.Now.ToLocalTime(); Dictionary <string, string> dict = new Dictionary <string, string>(); dict["asset"] = AssetEntry.Text; dict["assignee"] = AsigneeEntry.Text; dict["time"] = now.ToString(); var isSuccess = await cloudStore.AssignAsset(dict); if (isSuccess) { await DisplayAlert("Success", "Asset Assigned Successfully.", "Ok"); App.Current.MainPage = new MainViewAssetPage(); //AssetEntry.Text = string.Empty; //DescriptionEntry.Text = string.Empty; } else { await DisplayAlert("Error", "Assignment Failed. Please try Again.", "Ok"); //AssetEntry.Text = string.Empty; //DescriptionEntry.Text = string.Empty; } Validate = false; } ((ListView)sender).SelectedItem = null; }; if (AsigneeEntry.Text == null) { AsigneeEntry.Focused += async(sender, e) => { try { var isSuccess = await cloudStore.GetUsers(); if (isSuccess != null) { lstview.ItemsSource = isSuccess; lstview.IsVisible = true; } else { await DisplayAlert("Error", "No Assignee", "Cancel", "Ok"); } } catch (Exception ex) { } }; } else { } }
protected override void Init() { var rootContentPageLayout = new StackLayout(); var rootContentPageButton = new Button() { Text = "PushAsync to next page", AutomationId = "btnNext", BackgroundColor = Color.FromHex("#ecf0f1"), TextColor = Color.Black }; rootContentPageButton.Clicked += async(sender, args) => { await Navigation.PushAsync(FirstContentPage); }; rootContentPageLayout.Children.Add(rootContentPageButton); Content = rootContentPageLayout; Title = "RootPage"; BackgroundColor = Color.FromHex("#2c3e50"); //MASTER PAGE MasterPage = new ContentPage() { Title = "Master", BackgroundColor = Color.FromHex("#1abc9c") }; var masterPageLayout = new StackLayout(); var masterPageButton = new Button() { Text = "Pop Modal and Pop Root", AutomationId = "btnPop", BackgroundColor = Color.FromHex("#ecf0f1"), TextColor = Color.Black }; masterPageButton.Clicked += async(sender, args) => { await Navigation.PopModalAsync(); await Navigation.PopToRootAsync(); }; masterPageLayout.Children.Add(masterPageButton); MasterPage.Content = masterPageLayout; //DETAIL PAGE DetailPage = new NavigationPage(new ContentPage() { Title = "RootNavigationDetailPage", BackgroundColor = Color.FromHex("#2980b9"), Content = new Button { Text = "PopModal", TextColor = Color.White, Command = new Command(async() => { await Navigation.PopModalAsync(); }) } }); //MASTERDETAIL PAGE HomePage = new MasterDetailPage() { Master = MasterPage, Detail = DetailPage }; //FIRST CONTENT PAGE FirstContentPage = new ContentPage() { Title = "First Content Page", BackgroundColor = Color.FromHex("#e74c3c") }; var firstContentPageLayout = new StackLayout(); var firstContentPageButton = new Button() { Text = "Push Modal To Master-Detail Page", AutomationId = "btnPushModal", BackgroundColor = Color.FromHex("#ecf0f1"), TextColor = Color.Black }; firstContentPageButton.Clicked += async(sender, args) => { await Navigation.PushModalAsync(HomePage); }; firstContentPageLayout.Children.Add(firstContentPageButton); FirstContentPage.Content = firstContentPageLayout; }
private void SettingChanged(Util.SettingName settingName, bool?value) { switch (settingName) { case Util.SettingName.GurmukhiVisible: versesObs.ToList().ForEach(a => a.GurmukhiVisible = value.Value); //ReloadGrid(); break; case Util.SettingName.EngTranslationVisible: versesObs.ToList().ForEach(a => a.TranslationVisible = value.Value); //ReloadGrid(); break; case Util.SettingName.PunTranslationVisible: versesObs.ToList().ForEach(a => a.PunjabiTranslationVisible = value.Value); //ReloadGrid(); break; case Util.SettingName.TransliterationVisible: versesObs.ToList().ForEach(a => a.TransliterationVisible = value.Value); //ReloadGrid(); break; case Util.SettingName.GurmukhiFontSize: if (value.Value) { versesObs.ToList().ForEach(a => a.GurmukhiFontSize += 2); } else { if (versesObs[0].GurmukhiFontSize >= 8) { versesObs.ToList().ForEach(a => a.GurmukhiFontSize -= 2); } } //ReloadGrid(); break; case Util.SettingName.EngTranslationFontSize: if (value.Value) { versesObs.ToList().ForEach(a => a.EnglishFontSize += 2); } else { if (versesObs[0].EnglishFontSize >= 8) { versesObs.ToList().ForEach(a => a.EnglishFontSize -= 2); } } //ReloadGrid(); break; case Util.SettingName.PunTranslationFontSize: if (value.Value) { versesObs.ToList().ForEach(a => a.PunjabiFontSize += 2); } else { if (versesObs[0].PunjabiFontSize >= 8) { versesObs.ToList().ForEach(a => a.PunjabiFontSize -= 2); } } //ReloadGrid(); break; case Util.SettingName.TransliterationFontSize: if (value.Value) { versesObs.ToList().ForEach(a => a.TransliterationFontSize += 2); } else { if (versesObs[0].TransliterationFontSize >= 8) { versesObs.ToList().ForEach(a => a.TransliterationFontSize -= 2); } } //ReloadGrid(); break; case Util.SettingName.FullScreen: //FullScreen(value.Value); break; case Util.SettingName.NormalFont: string fontName = value.Value ? Util.PunjabiFontKey : Util.HandFontKey; versesObs.ToList().ForEach(a => a.GurmukhiFontName = fontName); //ReloadGrid(); break; case Util.SettingName.HandFont: string fontName2 = value.Value ? Util.HandFontKey : Util.PunjabiFontKey; versesObs.ToList().ForEach(a => a.GurmukhiFontName = fontName2); //ReloadGrid(); break; case Util.SettingName.Ladivaar: VishraamLadivaar(); //ReloadGrid(); break; case Util.SettingName.Vishraam: VishraamLadivaar(); //ReloadGrid(); break; case Util.SettingName.Theme: Theme theme = new Theme(); versesObs?.ToList().ForEach(a => a.PageBgTheme = theme); BindingContext = theme; Util.SetStatusBarColor(Color.FromHex(theme.HeaderColor)); MasterDetailPage curPage = (MasterDetailPage)Application.Current.MainPage; if (curPage != null) { ((NavigationPage)curPage.Detail).BarBackgroundColor = Color.FromHex(theme.HeaderColor); EditToolbar.BackgroundColor = Color.FromHex(theme.HeaderColor); } if (SelectedVerseId != null && SelectedVerseId > 0) { SelectedVerse = versesObs.FirstOrDefault(a => a.ID == SelectedVerseId); SelectedVerse.ListBgColor = SelectedVerse.PageBgTheme.DefaultItemBg; } VishraamLadivaar(); break; } }
public void TestMasterVisibleDoubleSet () { var page = new MasterDetailPage (); bool signaled = false; page.PropertyChanged += (sender, args) => { if (args.PropertyName == MasterDetailPage.IsPresentedProperty.PropertyName) signaled = true; }; page.IsPresented = page.IsPresented; Assert.False (signaled); }
/// <summary> /// Sets the master detail master. /// </summary> /// <param name="page">Page.</param> public void SetMasterDetailMaster(MasterDetailPage page) { _masterDetailPage = page; }
protected override void Init () { s_mdp = this; var lblCount = new Label { AutomationId = "lblCount" }; var myCarouselPage = new CarouselPage () { Children = { new ContentPage { BackgroundColor = Color.Green, Content = new StackLayout { Children = { new Button { AutomationId = "ShowMasterBtnPage1", Text = "ShowMaster", Command = new Command(()=> s_mdp.IsPresented = true) }, lblCount } } }, new ContentPage { BackgroundColor = Color.Red }, new ContentPage { BackgroundColor = Color.Lime, }, new ContentPage { BackgroundColor = Color.Purple, }, } }; var myCarouselDetailPage = new NavigationPage (myCarouselPage); var myPushButton = new Button () { Text = "Push Page", HorizontalOptions = LayoutOptions.Start }; myCarouselPage.Appearing += (sender, e) => { _countAppearing++; lblCount.Text = _countAppearing.ToString (); }; myCarouselPage.Disappearing += (sender, e) => { _countAppearing--; }; var mySecondDetailPage = new NavigationPage (new ContentPage () { Title = "My Second Page", Content = new StackLayout () { Orientation = StackOrientation.Vertical, Children = { new Button { AutomationId = "ShowMasterBtnPage2", Text = "ShowMaster", Command = new Command(()=> s_mdp.IsPresented = true) }, myPushButton } } }); myPushButton.Command = new Command (() => mySecondDetailPage.Navigation.PushAsync (new ContentPage () { Title = "My Pushed Page" })); var myMasterPage = new ContentPage () { Padding = new Thickness (0, 60, 0, 0), Title = "Menu", Content = new StackLayout () { Orientation = StackOrientation.Vertical, Children = { new Button () { Text = "Detail 1", AutomationId = "btnDetail1", Command = new Command (() => { Detail = myCarouselDetailPage; IsPresented = false; }), HorizontalOptions = LayoutOptions.Start }, new Button () { Text = "Detail 2", AutomationId = "btnDetail2", Command = new Command (() => { Detail = mySecondDetailPage; IsPresented = false; }), HorizontalOptions = LayoutOptions.Start } } } }; Master = myMasterPage; Detail = myCarouselDetailPage; }
public void ThrowsExceptionWhenAddingAlreadyParentedDetail () { var detail = new ContentPage {}; // give detail a parent var nav = new NavigationPage (detail); var mdp = new MasterDetailPage (); Assert.Throws<InvalidOperationException> (() => mdp.Detail = detail); }
void UpdateToolbarItems() { if (_page.ApplicationBar == null) { _page.ApplicationBar = new ApplicationBar(); } ToolbarItem[] items = _tracker.ToolbarItems.ToArray(); MasterDetailPage masterDetail = _tracker.Target.Descendants().Prepend(_tracker.Target).OfType <MasterDetailPage>().FirstOrDefault(); TaggedAppBarButton oldMasterDetailButton = _page.ApplicationBar.Buttons.OfType <TaggedAppBarButton>().FirstOrDefault(b => b.Tag is MasterDetailPage && b.Tag != masterDetail); if (oldMasterDetailButton != null) { _page.ApplicationBar.Buttons.Remove(oldMasterDetailButton); } if (masterDetail != null) { if (masterDetail.ShouldShowToolbarButton()) { if (_page.ApplicationBar.Buttons.OfType <TaggedAppBarButton>().All(b => b.Tag != masterDetail)) { var button = new TaggedAppBarButton { IconUri = new Uri(masterDetail.Master.Icon ?? "ApplicationIcon.jpg", UriKind.Relative), Text = masterDetail.Master.Title, IsEnabled = true, Tag = masterDetail }; button.Click += (sender, args) => { var masterDetailRenderer = GetRenderer(masterDetail) as MasterDetailRenderer; if (masterDetailRenderer != null) { masterDetailRenderer.Toggle(); } }; _page.ApplicationBar.Buttons.Add(button); } } } var buttonsToAdd = new List <TaggedAppBarButton>(); foreach (ToolbarItem item in items.Where(i => i.Order != ToolbarItemOrder.Secondary)) { IMenuItemController controller = item; if (_page.ApplicationBar.Buttons.OfType <TaggedAppBarButton>().Any(b => b.Tag == item)) { continue; } var button = new TaggedAppBarButton { IconUri = new Uri(item.Icon ?? "ApplicationIcon.jpg", UriKind.Relative), Text = !string.IsNullOrWhiteSpace(item.Text) ? item.Text : (string)item.Icon ?? "ApplicationIcon.jpg", IsEnabled = controller.IsEnabled, Tag = item }; button.Click += (sender, args) => controller.Activate(); buttonsToAdd.Add(button); } var menuItemsToAdd = new List <TaggedAppBarMenuItem>(); foreach (ToolbarItem item in items.Where(i => i.Order == ToolbarItemOrder.Secondary)) { if (_page.ApplicationBar.MenuItems.OfType <TaggedAppBarMenuItem>().Any(b => b.Tag == item)) { continue; } var button = new TaggedAppBarMenuItem { Text = !string.IsNullOrWhiteSpace(item.Text) ? item.Text : (string)item.Icon ?? "MenuItem", IsEnabled = true, Tag = item }; button.Click += (sender, args) => ((IMenuItemController)item).Activate(); menuItemsToAdd.Add(button); } TaggedAppBarButton[] deadButtons = _page.ApplicationBar.Buttons.OfType <TaggedAppBarButton>().Where(b => b.Tag is ToolbarItem && !items.Contains(b.Tag)).ToArray(); TaggedAppBarMenuItem[] deadMenuItems = _page.ApplicationBar.MenuItems.OfType <TaggedAppBarMenuItem>().Where(b => b.Tag is ToolbarItem && !items.Contains(b.Tag)).ToArray(); // we must remove the dead buttons before adding the new ones so we don't accidentally go over the limit during the transition foreach (TaggedAppBarButton deadButton in deadButtons) { deadButton.Dispose(); _page.ApplicationBar.Buttons.Remove(deadButton); } foreach (TaggedAppBarMenuItem deadMenuItem in deadMenuItems) { _page.ApplicationBar.MenuItems.Remove(deadMenuItem); } // fixme, insert in order foreach (TaggedAppBarButton newButton in buttonsToAdd) { _page.ApplicationBar.Buttons.Add(newButton); } foreach (TaggedAppBarMenuItem newMenuItem in menuItemsToAdd) { _page.ApplicationBar.MenuItems.Add(newMenuItem); } _page.ApplicationBar.IsVisible = _page.ApplicationBar.Buttons.Count > 0 || _page.ApplicationBar.MenuItems.Count > 0; }
void IVisualElementRenderer.SetElement(VisualElement element) { MasterDetailPage oldElement = Element; MasterDetailPage newElement = Element = element as MasterDetailPage; if (oldElement != null) { ((IMasterDetailPageController)oldElement).BackButtonPressed -= OnBackButtonPressed; oldElement.PropertyChanged -= HandlePropertyChanged; oldElement.Appearing -= MasterDetailPageAppearing; oldElement.Disappearing -= MasterDetailPageDisappearing; } var statusBarHeight = 0; if (Forms.IsLollipopOrNewer) { statusBarHeight = ((FormsAppCompatActivity)Context).GetStatusBarHeight(); } if (newElement != null) { if (_detailLayout == null) { _detailLayout = new MasterDetailContainer(newElement, false, Context) { TopPadding = HasAncestorNavigationPage(Element) ? 0 : statusBarHeight, LayoutParameters = new LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent) }; _masterLayout = new MasterDetailContainer(newElement, true, Context) { TopPadding = ((IMasterDetailPageController)newElement).ShouldShowSplitMode ? statusBarHeight : 0, LayoutParameters = new LayoutParams(ViewGroup.LayoutParams.WrapContent, ViewGroup.LayoutParams.WrapContent) { Gravity = (int)GravityFlags.Start } }; if (_fragmentManager != null) { _detailLayout.SetFragmentManager(_fragmentManager); _masterLayout.SetFragmentManager(_fragmentManager); } AddView(_detailLayout); AddView(_masterLayout); Device.Info.PropertyChanged += DeviceInfoPropertyChanged; AddDrawerListener(this); } UpdateBackgroundColor(newElement); UpdateBackgroundImage(newElement); UpdateMaster(); UpdateDetail(); ((IMasterDetailPageController)newElement).BackButtonPressed += OnBackButtonPressed; newElement.PropertyChanged += HandlePropertyChanged; newElement.Appearing += MasterDetailPageAppearing; newElement.Disappearing += MasterDetailPageDisappearing; SetGestureState(); Presented = newElement.IsPresented; newElement.SendViewInitialized(this); } OnElementChanged(oldElement, newElement); // Make sure to initialize this AFTER event is fired if (_tracker == null) { _tracker = new VisualElementTracker(this); } }
/// <summary> /// Applies behaviors to a MasterDetailPage. /// </summary> /// <param name="page">The MasterDetailPage to apply the behaviors</param> protected virtual void ApplyMasterDetailPageBehaviors(MasterDetailPage page) { }
Task HandleCustomPushNavigation(MasterDetailPage masterDetailPage, NavigationPushInfo pushInfo) { // TODO: Implement your own navigation stack manipulation using pushInfo return(Task.FromResult(0)); }
void RegisterToolbar() { Context context = Context; AToolbar bar = _toolbar; Element page = Element.RealParent; _masterDetailPage = null; while (page != null) { if (page is MasterDetailPage) { _masterDetailPage = page as MasterDetailPage; break; } page = page.RealParent; } if (_masterDetailPage == null) { if (PageController.InternalChildren.Count > 0) { _masterDetailPage = PageController.InternalChildren[0] as MasterDetailPage; } if (_masterDetailPage == null) { return; } } if (((IMasterDetailPageController)_masterDetailPage).ShouldShowSplitMode) { return; } var renderer = Android.Platform.GetRenderer(_masterDetailPage) as MasterDetailPageRenderer; if (renderer == null) { return; } _drawerLayout = renderer; FastRenderers.AutomationPropertiesProvider.GetDrawerAccessibilityResources(context, _masterDetailPage, out int resourceIdOpen, out int resourceIdClose); if (_drawerToggle != null) { _drawerToggle.ToolbarNavigationClickListener = null; _drawerToggle.Dispose(); } _drawerToggle = new ActionBarDrawerToggle(context.GetActivity(), _drawerLayout, bar, resourceIdOpen == 0 ? global::Android.Resource.String.Ok : resourceIdOpen, resourceIdClose == 0 ? global::Android.Resource.String.Ok : resourceIdClose) { ToolbarNavigationClickListener = new ClickListener(Element) }; if (_drawerListener != null) { _drawerLayout.RemoveDrawerListener(_drawerListener); _drawerListener.Dispose(); } _drawerListener = new DrawerMultiplexedListener { Listeners = { _drawerToggle, renderer } }; _drawerLayout.AddDrawerListener(_drawerListener); }
public static MasterDetailPage IsPresented(this MasterDetailPage page, bool presented) { page.IsPresented = presented; return(page); }
public MainMaster(MasterDetailPage _myMaster) { myMaster = _myMaster; InitializeComponent(); }
public static MasterDetailPage MasterBehavior(this MasterDetailPage page, MasterBehavior behavior) { page.MasterBehavior = behavior; return(page); }
internal static async void SetMasterLeftBarButton(UIViewController containerController, MasterDetailPage masterDetailPage) { if (!masterDetailPage.ShouldShowToolbarButton()) { containerController.NavigationItem.LeftBarButtonItem = null; return; } EventHandler handler = (o, e) => masterDetailPage.IsPresented = !masterDetailPage.IsPresented; bool shouldUseIcon = masterDetailPage.Master.Icon != null; if (shouldUseIcon) { try { var source = Internals.Registrar.Registered.GetHandler <IImageSourceHandler>(masterDetailPage.Master.Icon.GetType()); var icon = await source.LoadImageAsync(masterDetailPage.Master.Icon); containerController.NavigationItem.LeftBarButtonItem = new UIBarButtonItem(icon, UIBarButtonItemStyle.Plain, handler); } catch (Exception) { // Throws Exception otherwise would catch more specific exception type shouldUseIcon = false; } } if (!shouldUseIcon) { containerController.NavigationItem.LeftBarButtonItem = new UIBarButtonItem(masterDetailPage.Master.Title, UIBarButtonItemStyle.Plain, handler); } }
private void TapGestureRecognizer_Pesquisar(object sender, EventArgs e) { MasterDetailPage p = (MasterDetailPage)Application.Current.MainPage; p.Detail = new NavigationPage(new ListarDetail()); }
public Page ResolvePageAndViewModel(Type viewModelType, object args) { Page page = null; var viewModel = CreateViewModel(viewModelType); try { var viewModelTypeInfo = viewModelType.GetTypeInfo(); if (viewModel is ITabbedViewModel) { var tabbedViewModel = viewModel as ITabbedViewModel; var genericViewModels = viewModelTypeInfo.BaseType.GenericTypeArguments; if (genericViewModels.Length < 2) { throw new Exception("TabbedViewModels need at least 2 tabs (ViewModels)"); } page = ResolveTabbedPageForViewModels(tabbedViewModel, genericViewModels, args); } else { page = ResolvePage(viewModel); } viewModel.Init(args); } catch (Exception ex) { Debug.WriteLine(ex + "Failed to initialise ViewModel " + viewModel.GetType().Name); } if (viewModel.DrawerMenuViewModelType != null) { var masterDetailPage = new MasterDetailPage { Master = ResolvePageAndViewModel(viewModel.DrawerMenuViewModelType, null), Detail = page }; if (Device.RuntimePlatform != Device.Android) { masterDetailPage.IsGestureEnabled = false; } masterDetailPage.IsPresentedChanged += (sender, eventArgs) => { if (masterDetailPage.IsPresented) { ((IBaseViewModel)masterDetailPage.Master.BindingContext).OnAppearing(); } }; return(masterDetailPage); } return(page); }
public HamburgerMenuViewModel(MasterDetailPage masterDetailPage) { this.masterDetailPage = masterDetailPage; }
public void TestDoesNotThrowWhenPackedWithSetting () { MasterDetailPage page = new MasterDetailPage { Master = new ContentPage {Content = new View (), Title = "Foo"}, Detail = new ContentPage {Content = new View ()} }; Assert.DoesNotThrow (() => new TabbedPage {Children = {page}}); }
protected virtual async Task ProcessNavigationForMasterDetailPage(MasterDetailPage currentPage, string nextSegment, Queue <string> segments, INavigationParameters parameters, bool?useModalNavigation, bool animated) { bool isPresented = GetMasterDetailPageIsPresented(currentPage); var detail = currentPage.Detail; if (detail == null) { var newDetail = CreatePageFromSegment(nextSegment); await ProcessNavigation(newDetail, segments, parameters, useModalNavigation, animated); await DoNavigateAction(null, nextSegment, newDetail, parameters, onNavigationActionCompleted : () => { currentPage.IsPresented = isPresented; currentPage.Detail = newDetail; }); return; } if (useModalNavigation.HasValue && useModalNavigation.Value) { var nextPage = CreatePageFromSegment(nextSegment); await ProcessNavigation(nextPage, segments, parameters, useModalNavigation, animated); await DoNavigateAction(currentPage, nextSegment, nextPage, parameters, async() => { currentPage.IsPresented = isPresented; await DoPush(currentPage, nextPage, true, animated); }); return; } var nextSegmentType = PageNavigationRegistry.GetPageType(UriParsingHelper.GetSegmentName(nextSegment)); //we must recreate the NavigationPage everytime or the transitions on iOS will not work properly, unless we meet the two scenarios below bool detailIsNavPage = false; bool reuseNavPage = false; if (detail is NavigationPage navPage) { detailIsNavPage = true; //first we check to see if we are being forced to reuse the NavPage by checking the interface reuseNavPage = !GetClearNavigationPageNavigationStack(navPage); if (!reuseNavPage) { //if we weren't forced to reuse the NavPage, then let's check the NavPage.CurrentPage against the next segment type as we don't want to recreate the entire nav stack //just in case the user is trying to navigate to the same page which may be nested in a NavPage var nextPageType = PageNavigationRegistry.GetPageType(UriParsingHelper.GetSegmentName(segments.Peek())); var currentPageType = navPage.CurrentPage.GetType(); if (nextPageType == currentPageType) { reuseNavPage = true; } } } if ((detailIsNavPage && reuseNavPage) || (!detailIsNavPage && detail.GetType() == nextSegmentType)) { await ProcessNavigation(detail, segments, parameters, useModalNavigation, animated); await DoNavigateAction(null, nextSegment, detail, parameters, onNavigationActionCompleted : () => { currentPage.IsPresented = isPresented; }); return; } else { var newDetail = CreatePageFromSegment(nextSegment); await ProcessNavigation(newDetail, segments, parameters, newDetail is NavigationPage?false : true, animated); await DoNavigateAction(detail, nextSegment, newDetail, parameters, onNavigationActionCompleted : () => { currentPage.IsPresented = isPresented; currentPage.Detail = newDetail; PageUtilities.DestroyPage(detail); }); return; } }
public Page GetUserRootPage() { var masterMenuAbsLayout = new AbsoluteLayout(); App.HardwareBackPressed = () => Task.FromResult <bool?>(false); _userDetailPageData.FirstName = "loading..."; _userDetailPageData.LastName = "Last Name : loading..."; _userDetailPageData.Reputation = "Reputation : loading..."; _userDetailPageData.TotalEarning = "TotalEarning : loading..."; _userDetailPageData.UserProfilePicImageSource = ""; FetchUserDetailFromServer(); var userImage = new Image { BindingContext = _userDetailPageData, WidthRequest = 60, HeightRequest = 60, }; userImage.SetBinding(Image.SourceProperty, "UserProfilePicImageSource"); //userImage.Source = ImageSource.FromUri(new Uri("http://i.imgur.com/Y5DauNCm.jpg")); var firstName = new Label { BindingContext = _userDetailPageData, TextColor = Color.White }; firstName.SetBinding(Label.TextProperty, "FirstName"); var lastName = new Label { BindingContext = _userDetailPageData, TextColor = Color.White }; lastName.SetBinding(Label.TextProperty, "LastName"); masterMenuAbsLayout.Children.Add(userImage, new Point(20, 5)); masterMenuAbsLayout.Children.Add(firstName, new Point(90, 30)); masterMenuAbsLayout.Children.Add(lastName, new Point(90, 45)); return(MDPage = new MasterDetailPage { Master = new ContentPage { Title = "Master", BackgroundColor = Color.FromRgb(5, 99, 172), Icon = Device.OS == TargetPlatform.iOS ? "menu.png" : null, Content = new StackLayout { Padding = new Thickness(5, 50), Children = { masterMenuAbsLayout, Link(Constants.pageName_Tasks), Link(Constants.pageName_ActiveTasks), Link(Constants.pageName_CompletedTasks), Link(Constants.pageName_FacebookLike), Link(Constants.pageName_Referrals), Link(Constants.logoutButtonText) } }, }, Detail = new NavigationPage(new ContentPage { Content = new Label { Text = "Loading please wait...", VerticalOptions = LayoutOptions.CenterAndExpand, HorizontalOptions = LayoutOptions.CenterAndExpand, } }) , }); }
protected override void Dispose(bool disposing) { if (disposing) { if (Tracker != null) { Tracker.Dispose(); Tracker = null; } if (_detailLayout != null) { _detailLayout.Dispose(); _detailLayout = null; } if (_masterLayout != null) { _masterLayout.Dispose(); _masterLayout = null; } Device.Info.PropertyChanged -= DeviceInfoPropertyChanged; if (_page != null) { MasterDetailPageController.BackButtonPressed -= OnBackButtonPressed; _page.PropertyChanged -= HandlePropertyChanged; _page.Appearing -= MasterDetailPageAppearing; _page.Disappearing -= MasterDetailPageDisappearing; _page.ClearValue(Platform.RendererProperty); _page = null; } } base.Dispose(disposing); }
public MasterDetailPageInfo(MasterDetailPage masterDetailPage, KeyValuePair <IMasterViewModel, Page> masterViewModelWithView, KeyValuePair <IDetailViewModel, Page> detailViewModelWithView) { MasterDetailPage = masterDetailPage; MasterViewModelWithView = masterViewModelWithView; DetailViewModelWithView = detailViewModelWithView; }
protected override void Dispose(bool disposing) { if (disposing) { MessagingCenter.Unsubscribe<IVisualElementRenderer>(this, UpdateToolbarButtons); foreach (var childViewController in ViewControllers) childViewController.Dispose(); if (_tracker != null) _tracker.Dispose(); _secondaryToolbar.RemoveFromSuperview(); _secondaryToolbar.Dispose(); _secondaryToolbar = null; _parentMasterDetailPage = null; Current = null; // unhooks events var navPage = (NavigationPage)Element; navPage.PropertyChanged -= HandlePropertyChanged; var navController = ((INavigationPageController)navPage); navController.PushRequested -= OnPushRequested; navController.PopRequested -= OnPopRequested; navController.PopToRootRequested -= OnPopToRootRequested; navController.RemovePageRequested -= OnRemovedPageRequested; navController.InsertPageBeforeRequested -= OnInsertPageBeforeRequested; } base.Dispose(disposing); if (_appeared) { PageController.SendDisappearing(); _appeared = false; } }
private void Button_pagecadastrar_cancelar_Clicked(object sender, EventArgs e) { MasterDetailPage p = (MasterDetailPage)Application.Current.MainPage; p.Detail = new NavigationPage(new PageHome()); }
public void TestMasterVisible () { var page = new MasterDetailPage (); Assert.AreEqual (false, page.IsPresented); bool signaled = false; page.PropertyChanged += (sender, args) => { if (args.PropertyName == MasterDetailPage.IsPresentedProperty.PropertyName) signaled = true; }; page.IsPresented = true; Assert.AreEqual (true, page.IsPresented); Assert.True (signaled); }
public MasterPage(MasterDetailPage mdpl) { this.mdpl = mdpl; StackLayout stck = new StackLayout { Children = { new Frame { HeightRequest = 200, BackgroundColor = Color.FromRgba(0, 0, 0, 0.1), Content = new StackLayout { Children = { new Image { Source = ImageSource.FromFile("assets/images/logo.png") }, new Label { Text = "by: Muhammad Ikbal", HorizontalOptions = LayoutOptions.StartAndExpand, VerticalOptions = LayoutOptions.EndAndExpand, } } } } } }; List <Template> list_menu = new List <Template>() { new Template() { Item = "MASS SPAM COMENT POST" }, new Template() { Item = "MASS LIKE POST" }, new Template() { Item = "ABOUT" } }; ListView lw = new ListView(); lw.ItemTemplate = new DataTemplate(typeof(TextCell)); lw.ItemTemplate.SetBinding(TextCell.TextProperty, "Item"); lw.ItemsSource = list_menu; lw.ItemSelected += (sender, args) => { string item_s_t = ((Template)args.SelectedItem).Item; switch (item_s_t) { case "MASS SPAM COMENT POST": mdpl.Detail = new NavigationPage(new Mass_coment()); break; case "MASS LIKE POST": mdpl.Detail = new NavigationPage(new Mass_like()); break; case "ABOUT": mdpl.Detail = new NavigationPage(new About()); break; default: break; } }; stck.Children.Add(lw); Content = stck; Title = "ok"; }
public App() { FlowListView.Init(); GatewayApi.Instance.ExpiredAccessToken += async(object sender, EventArgs e) => { var localEnvironments = await LocalDbHelper.Instance.GetAllSavedEnvironmentsAsync(); BlockchainEnvironment environment = localEnvironments[0]; var authService = ServiceContainer.Resolve <IAuthentication>(); var loginResponse = await authService.LoginAsync( $"https://login.windows.net/{environment.TenantId}", environment.ResourceId, environment.ClientId, environment.ReturnUrl, isRefresh : true); if (loginResponse != null) { AppCenterHelper.TrackEvent("Refreshed Token", new Dictionary <string, string>() { { "username", loginResponse.Profile.DisplayableId } }); Settings.AccessToken = loginResponse.AccessToken; GatewayApi.Instance.SetAuthToken(loginResponse.AccessToken); #if DEBUG Settings.AccessTokenExpiration = new DateTimeOffset(DateTime.Now.AddMinutes(2)); GatewayApi.Instance.AccessTokenExpiration = new DateTimeOffset(DateTime.Now.AddMinutes(2)); #else Settings.AccessTokenExpiration = loginResponse.ExpiresOn; GatewayApi.Instance.AccessTokenExpiration = loginResponse.ExpiresOn; #endif } else { App.Logout(false); } }; GatewayApi.Instance.ExceptionThrown += async(object sender, Exception e) => { AppCenterHelper.Report(e, new Dictionary <string, string>() { { "baseurl", GatewayApi.SiteUrl } }); }; ViewModel = new AppViewModel(); backgroundPage = new BackgroundPage(); var navPage = new Xamarin.Forms.NavigationPage(backgroundPage); var detailNavPage = new Xamarin.Forms.NavigationPage(new ApplicationsPage()); ContractsPage = new WorklfowInstanceListPage(); navPage.BarBackgroundColor = Constants.NavBarBackgroundColor; navPage.BarTextColor = Constants.NavBarTextColor; detailNavPage.BarBackgroundColor = Constants.NavBarBackgroundColor; detailNavPage.BarTextColor = Constants.NavBarTextColor; Master = new MasterDetailPage { BindingContext = ViewModel }; Master.IsPresentedChanged += (object sender, EventArgs e) => { var mdp = sender as MasterDetailPage; if (mdp.IsPresented) { ((Xamarin.Forms.NavigationPage)mdp.Detail) .On <iOS>() .SetStatusBarTextColorMode(StatusBarTextColorMode.DoNotAdjust); } else { ((Xamarin.Forms.NavigationPage)mdp.Detail) .On <iOS>() .SetStatusBarTextColorMode(StatusBarTextColorMode.MatchNavigationBarTextLuminosity); } }; Master.Master = new MasterPage { BindingContext = ViewModel }; Master.Detail = detailNavPage; Master.SetBinding(MasterDetailPage.IsPresentedProperty, nameof(AppViewModel.MenuPresented), BindingMode.TwoWay); Xamarin.Forms.NavigationPage.SetHasNavigationBar(detailNavPage, false); try { MainPage = navPage; } catch (Exception e) { AppCenterHelper.Report(e); } }
public static void SetMasterPage(MasterDetailPage masterDetailPage, Page detailPage) { masterDetailPage.Detail = new NavigationPage(detailPage); Application.Current.MainPage = masterDetailPage; }
public void EmitsCorrectlyWhenPresentedOnBackPressed () { var detail = new BackButtonPage (); var master = new BackButtonPage { Title = "Master" }; var mdp = new MasterDetailPage { Detail = detail, Master = master, IsPresented = true, IsPlatformEnabled = true, Platform = new UnitPlatform () }; ((IMasterDetailPageController)mdp).BackButtonPressed += (sender, args) => { args.Handled = mdp.IsPresented; mdp.IsPresented = false; }; var detailEmitted = false; var masterEmitted = false; detail.BackPressed += (sender, args) => detailEmitted = true; master.BackPressed += (sender, args) => masterEmitted = true; var result = mdp.SendBackButtonPressed (); Assert.True (masterEmitted); Assert.False (detailEmitted); Assert.True (result); }