/*
         * 释放其他弹窗
         */
        private void realeaseOtherFrameDialog(Grid mainContainerTmp)
        {
            for (int i = 0; i < mainContainerTmp.Children.Count; i++)
            {
                FrameworkElement Ei = (FrameworkElement)mainContainerTmp.Children[i];
                if (Ei is Canvas && Ei.Name == "frameDialogCanvas")
                {
                    Canvas frameDialogCanvas = (Canvas)Ei;

                    for (int j = 0; j < frameDialogCanvas.Children.Count; j++)
                    {
                        FrameworkElement Ej = (FrameworkElement)frameDialogCanvas.Children[j];
                        if (Ej is Canvas && Ej.Name == "innerCanvas")
                        {
                            Canvas innerCanvas = (Canvas)Ej;

                            ShowFrameDialogUtil.closeAnimation_Completed(frameDialogCanvas, innerCanvas, mainContainerTmp);
                        }
                    }
                }
            }
        }
        /*
         *  1.2 弹窗显示页面
         */
        public void insertFrameDialog(DControl dControl)
        {
            //1.获取指定的显示位置,CFrame的宽高
            CFrameTag cFrameTag        = getCFrameTag(dControl.showInWhichCFrame);
            Grid      mainContainerTmp = mainContainer;
            Frame     mainFrameTmp     = mainFrame;

            if (cFrameTag != null)
            {
                //获取框架中的页面大小,及container
                PageTemplate pt = (PageTemplate)cFrameTag.currCFrame.Content;
                mainContainerTmp = pt.container;
                mainFrameTmp     = cFrameTag.currCFrame;
            }
            this.realeaseOtherFrameDialog(mainContainerTmp);

            Int32 linkToPageId = dControl.linkToPageId;

            if (linkToPageId <= 0)
            {
                return;
            }
            DPage linkToDPage = dPageBll.get(linkToPageId);

            if (linkToDPage == null)
            {
                return;
            }
            //窗口所在父页面
            //if (dControlDto.pageId <= 0) return;
            //DPage dPage = dPageBll.get(dControlDto.pageId);
            //if (dPage == null) return;

            //父页面宽高
            int dPageWidth  = Convert.ToInt32(mainContainerTmp.ActualWidth);
            int dPageHeight = Convert.ToInt32(mainContainerTmp.ActualHeight);



            //弹窗
            int frameWidth  = Convert.ToInt32(dPageWidth);
            int frameHeight = Convert.ToInt32(dPageHeight);

            if (linkToDPage.width > 0)
            {
                frameWidth = linkToDPage.width;
            }
            if (linkToDPage.height > 0)
            {
                frameHeight = linkToDPage.height;
            }
            Cfg cfg = new Cfg();

            cfg.screenWidth  = frameWidth;
            cfg.screenHeight = frameHeight;



            Canvas frameDialogCanvas = new Canvas();

            frameDialogCanvas.Name = "frameDialogCanvas";
            frameDialogCanvas.HorizontalAlignment = HorizontalAlignment.Left;
            frameDialogCanvas.VerticalAlignment   = VerticalAlignment.Top;
            frameDialogCanvas.Width      = dPageWidth;
            frameDialogCanvas.Height     = dPageHeight;
            frameDialogCanvas.Background = Brushes.Transparent;
            Panel.SetZIndex(frameDialogCanvas, 10004);

            //1.透明底层
            Border frameDialogBorder = new Border();

            frameDialogBorder.Name       = "frameDialogBorder";
            frameDialogBorder.Width      = dPageWidth;
            frameDialogBorder.Height     = dPageHeight;
            frameDialogBorder.Background = Brushes.Black;
            frameDialogBorder.Opacity    = 0.5;
            Panel.SetZIndex(frameDialogBorder, 1);
            frameDialogCanvas.Children.Add(frameDialogBorder);


            //2.弹窗
            Canvas innerCanvas = new Canvas();

            innerCanvas.Name                = "innerCanvas";
            innerCanvas.Width               = cfg.screenWidth;
            innerCanvas.Height              = cfg.screenHeight;
            innerCanvas.Background          = Brushes.Transparent;
            innerCanvas.HorizontalAlignment = HorizontalAlignment.Left;
            innerCanvas.VerticalAlignment   = VerticalAlignment.Top;
            double left = dControl.left;
            double top  = dControl.top;

            innerCanvas.SetValue(Canvas.LeftProperty, left);
            innerCanvas.SetValue(Canvas.TopProperty, top);
            Panel.SetZIndex(innerCanvas, 2);



            CFrame cFrame = new CFrame(mainFrameTmp, dControl, cfg, pageTemplate1.screen, pageTemplate1.mqServer);

            cFrame.BorderThickness     = new Thickness(0);
            cFrame.Margin              = new Thickness(0, 0, 0, 0);
            cFrame.Width               = cfg.screenWidth;
            cFrame.Height              = cfg.screenHeight;
            cFrame.HorizontalAlignment = HorizontalAlignment.Left;
            cFrame.VerticalAlignment   = VerticalAlignment.Top;
            cFrame.Opacity             = 100.0;
            Panel.SetZIndex(cFrame, 1);
            cFrame.Focusable = false;
            innerCanvas.Children.Add(cFrame);

            //4.关闭按钮
            double posR = -25.0;
            double posT = -25.0;

            if (dPageWidth == frameWidth && dPageHeight == frameHeight)
            {
                posR = 0;
                posT = 0;
            }
            Button closebtn = new Button();

            closebtn.Background = new ImageBrush
            {
                ImageSource = FileUtil.readImage(AppDomain.CurrentDomain.BaseDirectory + "/myfile/sysimg/ico-image-close.png")
                ,
                Stretch = Stretch.Fill
            };
            closebtn.Width               = 50;
            closebtn.Height              = 50;
            closebtn.BorderThickness     = new Thickness(0);
            closebtn.HorizontalAlignment = HorizontalAlignment.Left;
            closebtn.VerticalAlignment   = VerticalAlignment.Top;
            closebtn.SetValue(Canvas.RightProperty, posR);
            closebtn.SetValue(Canvas.TopProperty, posT);
            Panel.SetZIndex(closebtn, 2);
            innerCanvas.Children.Add(closebtn);


            TransformGroup group  = new TransformGroup();
            double         scaleX = dControl.width / innerCanvas.Width;
            double         scaleY = dControl.height / innerCanvas.Height;

            if (scaleX / scaleY > 2 || scaleY / scaleX > 2)
            {
                scaleX = 0.1;
                scaleY = 0.1;
                left   = left + dControl.width * (1 - 0.1) / 2; //默认比例0.1
                top    = top + dControl.height * (1 - 0.1) / 2;
                innerCanvas.SetValue(Canvas.LeftProperty, left);
                innerCanvas.SetValue(Canvas.TopProperty, top);
            }
            ScaleTransform scaleTransform = new ScaleTransform();

            scaleTransform.ScaleX = scaleX;
            scaleTransform.ScaleY = scaleY;
            group.Children.Add(scaleTransform);
            innerCanvas.RenderTransform = group;

            frameDialogCanvas.Children.Add(innerCanvas);

            closebtn.Click += (object sender1, RoutedEventArgs e1) => ShowFrameDialogUtil.closeAnimation(frameDialogCanvas, frameDialogBorder, innerCanvas, dControl, mainContainerTmp);
            frameDialogBorder.PreviewMouseLeftButtonDown += (object sender1, MouseButtonEventArgs e1) => ShowFrameDialogUtil.closeAnimation(frameDialogCanvas, frameDialogBorder, innerCanvas, dControl, mainContainerTmp);
            frameDialogBorder.PreviewTouchDown           += (object sender1, TouchEventArgs e1) => ShowFrameDialogUtil.closeAnimation(frameDialogCanvas, frameDialogBorder, innerCanvas, dControl, mainContainerTmp);

            //动画,平移到指定位置
            double toLeft = (dPageWidth - innerCanvas.Width) / 2;
            double toTop  = (dPageHeight - innerCanvas.Height) / 2;
            double toTranslateTransformX = toLeft - left;
            double toTranslateTransformY = toTop - top;


            ShowFrameDialogUtil.showAnimation(frameDialogBorder, innerCanvas, dControl, toTranslateTransformX, toTranslateTransformY);
            mainContainerTmp.Children.Add(frameDialogCanvas);
        }