protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (_masterContainer != null)
                {
                    _masterContainer.Dispose();
                    _masterContainer = null;
                }

                if (_detailContainer != null)
                {
                    _detailContainer.Dispose();
                    _detailContainer = null;
                }

                if (Element != null)
                {
                    Element.Appearing    -= OnMasterDetailAppearing;
                    Element.Disappearing -= OnMasterDetailDisappearing;
                }
            }

            base.Dispose(disposing);
        }
Beispiel #2
0
        public App()
        {
            InitializeComponent();

            if (Device.OS == TargetPlatform.Android || Device.OS == TargetPlatform.iOS)
            {
                MainPage = new MasterDetailContainer();
            }
            else
            {
                MainPage = new RootTabPage();
            }
        }
        protected override void OnElementChanged(ElementChangedEventArgs <MasterDetailPage> e)
        {
            if (_mdpage == null)
            {
                _mdpage = new Native.MasterDetailPage(System.Maui.Maui.NativeParent)
                {
                    IsPresented = e.NewElement.IsPresented,
                    Master      = _masterContainer = new MasterDetailContainer(Element, true),
                    Detail      = _detailContainer = new MasterDetailContainer(Element, false),
                };

                _mdpage.IsPresentedChanged += (sender, ev) =>
                {
                    Element.IsPresented = ev.IsPresent;
                };
                _mdpage.UpdateIsPresentChangeable += (sender, ev) =>
                {
                    (Element as IMasterDetailPageController).CanChangeIsPresented = ev.CanChange;
                };
                SetNativeView(_mdpage);
            }

            if (e.OldElement != null)
            {
                (e.OldElement as IMasterDetailPageController).BackButtonPressed -= OnBackButtonPressed;
                e.OldElement.Appearing    -= OnMasterDetailAppearing;
                e.OldElement.Disappearing -= OnMasterDetailDisappearing;
            }

            if (e.NewElement != null)
            {
                (e.NewElement as IMasterDetailPageController).BackButtonPressed += OnBackButtonPressed;
                e.NewElement.Appearing    += OnMasterDetailAppearing;
                e.NewElement.Disappearing += OnMasterDetailDisappearing;
            }

            UpdateMasterBehavior();
            base.OnElementChanged(e);
        }