Exemplo n.º 1
0
        public Dictionary <IAction, PropertyInfo[]> QueryCompatibleProperty(IAction action, BindingAttribute bindingAttribute, PropertyInfo propertyInfo)
        {
            if (_actionElements == null || _actionElements.Count == 0)
            {
                return(null);
            }
            Dictionary <IAction, PropertyInfo[]> atts = new Dictionary <IAction, PropertyInfo[]>();

            //
            foreach (ActionElement ele in _actionElements)
            {
                IAction act = ele.Action;
                if (act.Equals(action))
                {
                    continue;
                }
                Dictionary <PropertyInfo, BindingAttribute> ps = ArgBindingHelper.GetBindingProperties(act.GetType());
                List <PropertyInfo> infos = new List <PropertyInfo>();
                foreach (PropertyInfo info in ps.Keys)
                {
                    infos.Clear();
                    BindingAttribute ba = ps[info];
                    if (!bindingAttribute.SemanticType.Equals(ba.SemanticType))
                    {
                        continue;
                    }
                    if (!propertyInfo.PropertyType.Equals(info.PropertyType))
                    {
                        continue;
                    }
                    if (ba.Direction == enumBindingDirection.Input || ba.Direction == enumBindingDirection.None)
                    {
                        continue;
                    }
                    infos.Add(info);
                }
                if (infos.Count > 0)
                {
                    atts.Add(act, infos.ToArray());
                }
            }
            return(atts);
        }
Exemplo n.º 2
0
        private void BuildControls()
        {
            Type type = _action.GetType();
            Dictionary <PropertyInfo, BindingAttribute> properites = ArgBindingHelper.GetBindingProperties(type);

            if (properites == null || properites.Count == 0)
            {
                return;
            }
            int top = 20;

            BindingPair[] pairs = null;
            if (_bindingEnvironment != null)
            {
                pairs = _bindingEnvironment.GetBindingPairs(_action);
            }
            foreach (PropertyInfo p in properites.Keys)
            {
                BindingAttribute att = properites[p];
                if (att.Direction == enumBindingDirection.None || att.Direction == enumBindingDirection.Output)
                {
                    continue;
                }
                top = CreateLabel(top, p, att);
                top = CreateInputControl(top, p, att, pairs);
            }
            foreach (Control c in panelTop.Controls)
            {
                if (c is ComboBox || c is ListBox)
                {
                    c.Anchor = c.Anchor | AnchorStyles.Right;
                }
                else if (c is Button)
                {
                    c.Anchor = AnchorStyles.Top | AnchorStyles.Right;
                }
            }
        }