/*
         * 4.1 返回按钮单击
         */
        public void backButtonClick(object sender, RoutedEventArgs e)
        {
            Button   backButton = (Button)sender;
            DControl dControl   = (DControl)backButton.Tag;

            DPage dPage = dPageBll.get(dControl.pageId);

            if (dPage.parentId <= 0)
            {
                return;
            }

            //设置返回哪一个页面
            dControl.linkToPageId = dPage.parentId;

            int pageSwitchType = dPage.pageSwitchType;

            if (pageSwitchType <= 0)
            {
                pageSwitchType = 1;
            }

            //1.默认
            if (pageSwitchType == 1)
            {
                PageTemplate page = new PageTemplate(pageTemplate1.mainFrame, dPage.parentId, true, true, pageSwitchType, pageTemplate1.screen, pageTemplate1.mqServer);
                pageTemplate1.NavigationService.Navigate(page);
                return;
            }
            //2.淡出
            if (pageSwitchType == 2)
            {
                TransformGroup group = new TransformGroup();
                pageTemplate1.RenderTransform = group;

                DoubleAnimation da = new DoubleAnimation(1.0, 0, new Duration(TimeSpan.FromMilliseconds(500)));
                da.BeginTime = TimeSpan.FromMilliseconds(0);
                IEasingFunction easingFunction = new SineEase()
                {
                    EasingMode = EasingMode.EaseIn
                };
                da.EasingFunction = easingFunction;
                da.Completed     += (sender1, e1) => fadeOut_Completed(dControl, true, pageSwitchType);
                pageTemplate1.BeginAnimation(UIElement.OpacityProperty, da);
                return;
            }

            //3.右侧移入 -> 左侧移出
            if (pageSwitchType == 3)
            {
                Border    CoverBorder = null;
                CFrameTag tag         = (CFrameTag)pageTemplate1.mainFrame.Tag;
                CoverBorder = tag.currCoverBorder;


                //截图
                string shotImage = ShotUtil.shot(pageTemplate1);
                //显示上一页
                BitmapImage bitmapImage = FileUtil.readImage(AppDomain.CurrentDomain.BaseDirectory + shotImage);
                CoverBorder.Background = new ImageBrush
                {
                    ImageSource = bitmapImage
                    ,
                    Stretch = Stretch.Fill
                };
                CoverBorder.Visibility = Visibility.Visible;
                CoverBorder.UpdateLayout();


                PageTemplate page = new PageTemplate(pageTemplate1.mainFrame, dPage.parentId, true, true, pageSwitchType, pageTemplate1.screen, pageTemplate1.mqServer);
                pageTemplate1.NavigationService.Navigate(page);


                //移出当前封面
                int pageWidth = PageWidthUtil.getPageWidth(dPage.width, App.localStorage.cfg.screenWidth);
                CoverBorderUtil.TranslateXMoveOut(CoverBorder, pageWidth);

                return;
            }


            //4.右侧拉伸 -> 左侧收缩
            if (pageSwitchType == 4)
            {
                pageTemplate1.mainFrame.Background = Brushes.White;
                Border    CoverBorder = null;
                CFrameTag tag         = (CFrameTag)pageTemplate1.mainFrame.Tag;
                CoverBorder = tag.currCoverBorder;
                //截图
                string shotImage = ShotUtil.shot(pageTemplate1);
                CoverBorder.Background = new ImageBrush
                {
                    ImageSource = FileUtil.readImage(AppDomain.CurrentDomain.BaseDirectory + shotImage)
                    ,
                    Stretch = Stretch.Fill
                };
                CoverBorder.Visibility = Visibility.Visible;

                //显示上一页
                PageTemplate page = new PageTemplate(pageTemplate1.mainFrame, dPage.parentId, true, true, pageSwitchType, pageTemplate1.screen, pageTemplate1.mqServer);
                pageTemplate1.NavigationService.Navigate(page);

                //移出当前封面
                CoverBorderUtil.ScaleXMoveOut(CoverBorder);
                return;
            }


            //5.中心放大 -> 中心收缩
            if (pageSwitchType == 5)
            {
                pageTemplate1.mainFrame.Background = Brushes.White;
                Border    CoverBorder = null;
                CFrameTag tag         = (CFrameTag)pageTemplate1.mainFrame.Tag;
                CoverBorder = tag.currCoverBorder;
                //截图
                string shotImage = ShotUtil.shot(pageTemplate1);
                CoverBorder.Background = new ImageBrush
                {
                    ImageSource = FileUtil.readImage(AppDomain.CurrentDomain.BaseDirectory + shotImage)
                    ,
                    Stretch = Stretch.Fill
                };
                CoverBorder.Visibility = Visibility.Visible;

                //显示上一页
                PageTemplate page = new PageTemplate(pageTemplate1.mainFrame, dPage.parentId, true, true, pageSwitchType, pageTemplate1.screen, pageTemplate1.mqServer);
                pageTemplate1.NavigationService.Navigate(page);

                //移出当前封面
                CoverBorderUtil.CenterMoveOut(CoverBorder);
                return;
            }
        }
        /*
         * 1.3 跳转到指定的页面,并伴随页面切换效果
         */
        private void linkToPageWithPageSwitchType(DControl ctl)
        {
            //1.如果显示位置不是 最顶层,则直接显示(无页面切换效果)
            CFrameTag cFrameTag = getCFrameTag(ctl.showInWhichCFrame);
            //2.如果是当前页面
            DPage linkToDPage = dPageBll.get(ctl.linkToPageId);

            if (linkToDPage == null)
            {
                return;
            }
            if (linkToDPage.pageSwitchType <= 0)
            {
                linkToDPage.pageSwitchType = 1;
            }

            //滚动条回到开始
            if (cFrameTag.parentFrame != null)
            {
                object parent = cFrameTag.currCFrame.Parent;
                if (parent is ScrollViewer)
                {
                    ScrollViewer sv = (ScrollViewer)parent;
                    sv.ScrollToVerticalOffset(0);
                    sv.ScrollToHorizontalOffset(0);
                }
            }

            //1.直接进入
            if (linkToDPage.pageSwitchType == 1)
            {
                //  cFrameTag.currCFrame.Background = Brushes.White;
                PageTemplate page1 = new PageTemplate(cFrameTag.currCFrame, ctl.linkToPageId, false, pageTemplate1.screen, pageTemplate1.mqServer);
                cFrameTag.currCFrame.NavigationService.Navigate(page1);
                return;
            }
            //2.淡出淡入
            if (linkToDPage.pageSwitchType == 2)
            {
                PageTemplate pt = (PageTemplate)cFrameTag.currCFrame.Content;
                cFrameTag.currCFrame.Background = Brushes.White;
                pt.RenderTransformOrigin        = new System.Windows.Point(0.5, 0.5);
                TransformGroup group = new TransformGroup();
                pt.RenderTransform = group;

                DoubleAnimation da = new DoubleAnimation(1.0, 0, new Duration(TimeSpan.FromMilliseconds(400)));
                da.BeginTime = TimeSpan.FromMilliseconds(0);
                IEasingFunction easingFunction = new CubicEase()
                {
                    EasingMode = EasingMode.EaseIn
                };
                da.EasingFunction = easingFunction;
                da.Completed     += (sender1, e1) => fadeOut_Completed(ctl, cFrameTag);
                pt.BeginAnimation(UIElement.OpacityProperty, da);

                return;
            }

            //3.右侧移入
            if (linkToDPage.pageSwitchType == 3)
            {
                PageTemplate pt        = (PageTemplate)cFrameTag.currCFrame.Content;
                string       shotImage = ShotUtil.shot(pt);
                cFrameTag.currCFrame.Background = new ImageBrush
                {
                    ImageSource = FileUtil.readImage(AppDomain.CurrentDomain.BaseDirectory + shotImage)
                };
                PageTemplate page = new PageTemplate(cFrameTag.currCFrame, ctl.linkToPageId, true, pageTemplate1.screen, pageTemplate1.mqServer);
                cFrameTag.currCFrame.NavigationService.Navigate(page);
                FrameUtil.RemoveBackEntry(cFrameTag.currCFrame);
                return;
            }

            //4.右侧拉伸
            if (linkToDPage.pageSwitchType == 4)
            {
                PageTemplate pt        = (PageTemplate)cFrameTag.currCFrame.Content;
                string       shotImage = ShotUtil.shot(pt);
                cFrameTag.currCFrame.Background = new ImageBrush
                {
                    ImageSource = FileUtil.readImage(AppDomain.CurrentDomain.BaseDirectory + shotImage)
                };
                PageTemplate page = new PageTemplate(cFrameTag.currCFrame, ctl.linkToPageId, true, pageTemplate1.screen, pageTemplate1.mqServer);
                cFrameTag.currCFrame.NavigationService.Navigate(page);
                FrameUtil.RemoveBackEntry(cFrameTag.currCFrame);
                return;
            }

            //5.中心放大
            if (linkToDPage.pageSwitchType == 5)
            {
                PageTemplate pt        = (PageTemplate)cFrameTag.currCFrame.Content;
                string       shotImage = ShotUtil.shot(pt);
                cFrameTag.currCFrame.Background = new ImageBrush
                {
                    ImageSource = FileUtil.readImage(AppDomain.CurrentDomain.BaseDirectory + shotImage)
                };
                PageTemplate page = new PageTemplate(cFrameTag.currCFrame, ctl.linkToPageId, true, pageTemplate1.screen, pageTemplate1.mqServer);
                cFrameTag.currCFrame.NavigationService.Navigate(page);
                FrameUtil.RemoveBackEntry(cFrameTag.currCFrame);
                return;
            }
        }