示例#1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="action"></param>
        /// <returns></returns>
        public virtual Control AddAction(ActionMetaItem action)
        {
            Control actionControl = null;

            if (!IsActionVisible(action))
            {
                return(null);
            }

            //если это кастомная кнопка, то определим для неё функцию
            if (action.ActionType.Equals(ActionTypes.Action) && (BasePanel != null))
            {
                var kvpFirst  = BasePanel.GetFirstUIFunc(action.Name);
                var kvpSecond = BasePanel.GetSecondUIFunc(action.Name);
                if (kvpFirst.Key != null)
                {
                    action.AddFirstUIFunc(kvpFirst.Key, kvpFirst.Value);
                }
                if (kvpSecond.Key != null)
                {
                    action.AddSecondUIFunc(kvpSecond.Key, kvpSecond.Value);
                }
            }

            //если не надо группировать действие, то просто рендерим его как кнопку
            if (String.IsNullOrEmpty(action.Container) && action.ActionType != ActionTypes.Container)
            {
                #region Создание обычной кнопки

                //создаём кнопки для каждого действия

                var button = new SimpleButton
                {
                    Name = String.Format("btn{0}", action.Name),
                };

                InitButton(button, action);
                button.Tag    = action;
                button.Click += OnButtonClick;
                m_Buttons.Add(button); //TODO может быть добавить дополнительную очистку списка в Dispose

                actionControl = button;

                #endregion

                if (BusinessObject != null)
                {
                    SetButtonEnbabled(button, BusinessObject, action);
                    BusinessObject.PropertyChanged += (sender, args) => SetButtonEnbabled(button, BusinessObject, action);
                    BusinessObject.AfterPost       += (sender, args) => SetButtonEnbabled(button, BusinessObject, action);
                }

                if (!Controls.Contains(actionControl))
                {
                    Controls.Add(actionControl);
                }
            }

            return(actionControl);
        }