Ejemplo n.º 1
0
 /// <summary>
 /// 释放资源
 /// </summary>
 public override void Dispose()
 {
     DesignPage.Dispose();
     DesignPage.ControlPosition -= PageDesign_ControlPosition;
     DesignPage.ControlDelete   -= DesignPage_ControlDelete;
     txtXaml.LostFocus          -= txtXaml_LostFocus;
     txtXml.LostFocus           -= txtXml_LostFocus;
     this._IDesignFramework      = null;
 }
Ejemplo n.º 2
0
 /// <summary>
 /// 在切换tableControl控件的时候,更新属性以及控件树
 /// </summary>
 internal void UpdatePropertyGridAndControlTree()
 {
     UpdateControlTree();
     DesignPage.UpdatePropertyGrid();
 }
Ejemplo n.º 3
0
        void Xaml_LostFocus(string orgValue, string changeXaml)
        {
            if (changeXaml.IsNullOrEmpty() || changeXaml.Equals(orgValue))
            {
                return;
            }
            //-->判断控件是否可用。
            FrameworkElement fe = Wrapper.LoadXaml <FrameworkElement>(changeXaml);

            if (null == fe)
            {
                _XamlTemplate      = new XamlTemplate();
                this.Xaml_Template = _XamlTemplate.ParseXml().ToString();
                return;
            }
            XamlTemplate new_xamlTemplate = XamlTemplate.DecodeXml(changeXaml);

            //-->判断程序集是否有改变
            this._XamlTemplate.AssemblyCollection.AddRange(new_xamlTemplate.AssemblyCollection);

            XamlCanvasTemplate old_Xaml_CanvasTemplate = this._XamlTemplate.CanvasTemplate;

            //-->判断画布的大小,背景色是否不同
            foreach (var cp in new_xamlTemplate.CanvasTemplate.CanvasPropertyDict)
            {
                if (old_Xaml_CanvasTemplate.CanvasPropertyDict.ContainsKey(cp.Key))
                {
                    if (!old_Xaml_CanvasTemplate.CanvasPropertyDict[cp.Key].Equals(cp.Value))
                    {
                        //-->内容有改变
                        old_Xaml_CanvasTemplate.CanvasPropertyDict[cp.Key] = cp.Value;
                    }
                }
                else
                {
                    old_Xaml_CanvasTemplate.CanvasPropertyDict.Add(cp.Key, cp.Value);
                }
            }
            //-->判断控件
            foreach (var child in new_xamlTemplate.CanvasTemplate.Children)
            {
                FrameworkElement _news_ctrl = fe.FindName(child.Key) as FrameworkElement;
                ((fe as UserControl).Content as Panel).Children.Remove(_news_ctrl);
                if (old_Xaml_CanvasTemplate.Children.ContainsKey(child.Key))
                {
                    if (!old_Xaml_CanvasTemplate.Children[child.Key].Equals(child.Value))
                    {
                        //-->删除原来的控件
                        this.DesignPage.DeleteChilren(child.Key);
                        //-->2、增加新的控件
                        this.DesignPage.AddChild(_news_ctrl, !_IsOpenPage);
                        DesignPage.UpdateDesignRectangle(_news_ctrl);
                        old_Xaml_CanvasTemplate.Children[child.Key] = child.Value;
                    }
                    continue;
                }
                this.DesignPage.AddChild(_news_ctrl, !_IsOpenPage);
                old_Xaml_CanvasTemplate.Children.Add(child.Key, child.Value);
                //-->初始一下内容
                if (_news_ctrl is ICompositeCtrl)
                {
                    var ci = _IDesignFramework.GetControlInfoByControlName(_news_ctrl.Name);
                    if (null == ci)
                    {
                        continue;
                    }
                    //-->查找 metadata 里 row里的信息
                    var ctrlMetaData = _IDesignFramework.GetMetaDataInfoByTableName(ci.MetaData);
                    if (null == ctrlMetaData || null == ctrlMetaData.Item || 0 == ctrlMetaData.Item.Count)
                    {
                        continue;
                    }
                    //--> metaData Column
                    var colXml = ctrlMetaData.Item.Where(p => p.column_name.Equals(ci.ColumnName)).GetFirst <MetaDataColumnInfo>();
                    if (null == colXml)
                    {
                        continue;
                    }
                    var _newCtrlMetaData = new MetaDataInfo();
                    _newCtrlMetaData.table_type    = ctrlMetaData.table_type;
                    _newCtrlMetaData.table_name    = ctrlMetaData.table_name;
                    _newCtrlMetaData.table_comment = ctrlMetaData.table_comment;
                    _newCtrlMetaData.Item          = new List <MetaDataColumnInfo>();
                    _newCtrlMetaData.Item.Add(colXml);

                    CtrlPlatformCommandInfo ctrlCmd = new CtrlPlatformCommandInfo();
                    ctrlCmd.ControlInfo  = ci;
                    ctrlCmd.MetaDataInfo = _newCtrlMetaData;
                    (_news_ctrl as ICompositeCtrl).InitTitle(ctrlCmd);
                }
            }
            //-->如果是高、宽改变了,得修改xml文件信息
            this._XmlTemplate.BaseInfo.PageHeight = new_xamlTemplate.Height;
            this._XmlTemplate.BaseInfo.PageWidth  = new_xamlTemplate.Width;
            _XamlTemplate.Height = new_xamlTemplate.Height;
            _XamlTemplate.Width  = new_xamlTemplate.Width;
            Xml_Template         = _XmlTemplate.ParseXml().ToString();
            _XamlTemplate        = new_xamlTemplate;

            this.Xaml_Template = changeXaml;
            DesignPage.UpdatePropertyGrid();
        }