Ejemplo n.º 1
0
        /// <summary>
        /// 给控件注册事件
        /// </summary>
        void RegisterControl()
        {
            if (null == _XmlTemplate || null == _XmlTemplate.EventBindItem)
            {
                return;
            }
            var ebis = _XmlTemplate.EventBindItem;

            foreach (var ebi in ebis)
            {
                //-->找出控件
                var control = FindControl(ebi.ControlName);
                var cc      = ParseControlConfig.GetControlConfig(control.GetType().Name);
                foreach (var cebi in ebi.Item)
                {
                    var _be = cc.Events.Where(p => p.Name.Equals(cebi.EventName)).GetFirst <BindEvent>();
                    if (null == _be)
                    {
                        continue;
                    }
                    Wrapper.ControlRegisterEvent(control, _be.Name, _be.AssemblyName, _be.BindFunctionName);
                    control.Tag = this;
                }
            }
        }
Ejemplo n.º 2
0
        /// <summary>
        /// 判断当前事件名称【EventName】它是来到于哪里,是Form还是自己所在控件里,
        /// 如果来到是Form里的话,此时的_ControlName就是用Wrapper.ParseControlName()得到,
        /// 否则的话,就不分析Control控件了
        /// </summary>
        /// <param name="ctrl"></param>
        /// <param name="eventName"></param>
        /// <returns></returns>
        internal static string GetControlName(FrameworkElement ctrl, string eventName)
        {
            var cc = ParseControlConfig.GetControlConfig(ctrl.GetType().Name);

            if (null == cc || null == cc.Functions || 0 == cc.Functions.Count)
            {
                return(Wrapper.ParseControlName(ctrl.Name));;
            }
            var fi = cc.Functions.Where(p => p.Name.Equals(eventName)).GetFirst <FunctionInfo>();

            if (null == fi)
            {
                return(Wrapper.ParseControlName(ctrl.Name));
            }
            return(ctrl.Name);
        }
        /// <summary>
        /// 增加控件绑定事件
        /// </summary>
        void AddCtrlBindEvent(XmlTemplate xml)
        {
            var _cc = ParseControlConfig.GetControlConfig(CurrentSelectedSetEventControl.GetType().Name);
            var _be = _cc.Events.Where(p => p.Name.Equals(this.EventName)).GetFirst <BindEvent>();

            EventBindInfo _ebi = new EventBindInfo();

            _ebi.ControlName = this.EventControlName;
            _ebi.Item        = new List <CtrlBindEventInfo>();

            CtrlBindEventInfo _cbei = new CtrlBindEventInfo();

            _cbei.EventName        = this.EventName;
            _cbei.AssemblyName     = _be.AssemblyName;
            _cbei.BindFunctionName = _be.BindFunctionName;
            _ebi.Item.Add(_cbei);

            xml.EventBindItem.Add(_ebi);
            IDesignFramework.UpdateCurrentTemplate();
        }
Ejemplo n.º 4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="ui"></param>
        /// <returns></returns>
        public static List <PropertyInfoAttribute> CommonPropertyItem(UIElement ui)
        {
            List <PropertyInfoAttribute> item = new List <PropertyInfoAttribute>();

            Type          tt = ui.GetType();
            ControlConfig cc = ParseControlConfig.GetControlConfig(tt.Name);

            if (null == cc)
            {
                return(item);
            }

            FrameworkElement fe = ui as FrameworkElement;

            foreach (var v in cc.DictProperty)
            {
                //string[] a = v.Split(';');
                PropertyInfoAttribute pia = GetPropertyInfoAttribute(ui, tt, v.Key, v.Value);
                item.Add(pia);
            }
            return(item);
        }
Ejemplo n.º 5
0
        /// <summary>
        /// 创建控件
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="controlType"></param>
        /// <returns></returns>
        public static T CreateCtrl <T>(string controlType) where T : FrameworkElement
        {
            List <String> assItem = new List <string>();

            assItem.AddRange(ParseControlTemplate.GetControlTempletConfig("UserControl").AssemblyCollection);
            ControlConfig config = ParseControlConfig.GetControlConfig(controlType);

            //-->判断是不是复合控件
            if (config.IsCompositeCtrl && !config.AssemblyQualifiedName.IsNullOrEmpty())
            {
                assItem.Add(config.AssemblyQualifiedName.Trim());
            }
            string ass = string.Join(" ", assItem);

            ass = string.Format(config.xaml, ass);
            ass = ass.Replace("??", config.Name + DateTime.Now.ToString("ffffff"));
            ass = ass.Trim();

            T tt = LoadXaml <T>(ass);

            tt.Tag = config;
            return(tt);
        }
Ejemplo n.º 6
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="ui"></param>
        /// <returns></returns>
        public static List <EventInfoAttribute> CommonEventItem(UIElement ui)
        {
            var result = new List <EventInfoAttribute>();

            if (null == ui)
            {
                return(result);
            }
            Type          tt = ui.GetType();
            ControlConfig cc = ParseControlConfig.GetControlConfig(tt.Name);

            if (null == cc || null == cc.Events)
            {
                return(result);
            }
            foreach (var e in cc.Events)
            {
                EventInfoAttribute ea = new EventInfoAttribute(e.Name, e.AssemblyName, e.Description, e.EventDesigner);
                ea.Source = ui;
                result.Add(ea);
            }
            return(result);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// 方法
        /// </summary>
        /// <param name="ui"></param>
        internal void ReadFunctions(UIElement ui)
        {
            spPValue.Children.Clear();
            DisposePValue();
            _ReadUIElement = ui;
            if (null == ui)
            {
                return;
            }
            var cc = ParseControlConfig.GetControlConfig(ui.GetType().Name);

            if (null == cc)
            {
                return;
            }
            //-->如果是Form里的子控件话吧,还得把Form里的函数取出来。
            string controlName = string.Format("{0}", this._ReadUIElement.GetValue(Canvas.NameProperty));

            var _xml = IDesignFramework.GetCurrentXmlTemplate();

            AddFunctionToStackPanel(controlName, cc.Functions, _xml);

            string _newControlName = Wrapper.ParseControlName(controlName);

            if (_newControlName.Equals(controlName))
            {
                return;
            }
            //-->说明此控件是Form控件里的一个子项
            var _formCC = ParseControlConfig.GetControlConfig(ConstantCollection.FORM_PREFIX);

            if (null == _formCC || null == _formCC.Functions || 0 == _formCC.Functions.Count)
            {
                return;
            }
            AddFunctionToStackPanel(_newControlName, _formCC.Functions, _xml);
        }
Ejemplo n.º 8
0
        /// <summary>
        /// 获取控件名称
        /// </summary>
        /// <returns></returns>
        string _GetControlName()
        {
            /************************************************************************
            * 判断当前事件名称【EventName】它是来到于哪里,是Form还是自己所在控件里
            *
            * 如果来到是Form里的话,此时的_ControlName就是用Wrapper.ParseControlName()得到
            *
            * 否而的话,就不分析Control控件了
            *
            ************************************************************************/
            var cc = ParseControlConfig.GetControlConfig(CurrentSelectedSetEventControl.GetType().Name);

            if (null == cc || null == cc.Functions || 0 == cc.Functions.Count)
            {
                return(Wrapper.ParseControlName(EventControlName));;
            }
            var fi = cc.Functions.Where(p => p.Name.Equals(EventName)).GetFirst <FunctionInfo>();

            if (null == fi)
            {
                return(Wrapper.ParseControlName(EventControlName));
            }
            return(EventControlName);
        }