Exemplo n.º 1
0
        /// <summary>
        /// 通过泛型处理模型数据变化(仅仅支持基本数据类型)
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="msg"></param>
        public void OnModelValueChangedStuff <T>(PropertyMessage msg)
        {
            //1、查表获取对应的view,如果没有对应条目则返回
            ViewBehaviour <T> _view = null;
            BindingItem       item  = _bindingTable.FindItemByEntityProperty(msg.TargetObject, msg.PropertyName);

            if (item.BindedEntity == null ||
                item.BindedEntityProperty.Equals("") ||
                item.BindedView == null ||
                item.BindedViewProperty.Equals(""))
            {
                return;
            }

            _view = (ViewBehaviour <T>)item.BindedView;

            //2、重置view状态
            if (_view.IsViewStateChanged)
            {
                _view.ResetViewState();
                return;
            }

            //3、更新界面显示
            if (!_view.Value.Equals((T)msg.NewValue))
            {
                _view.RefreshComponent((T)msg.NewValue);
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 添加绑定记录
        /// </summary>
        /// <param name="entity"></param>
        /// <param name="entityProperty"></param>
        /// <param name="view"></param>
        /// <param name="viewProperty"></param>
        public void AddItem(
            object entity,
            string entityProperty,
            object view,
            string viewProperty)
        {
            BindingItem item = new BindingItem();

            item.BindedEntity         = entity;
            item.BindedEntityProperty = entityProperty;
            item.BindedView           = view;
            item.BindedViewProperty   = viewProperty;

            _items.Add(item);
        }
Exemplo n.º 3
0
        /// <summary>
        /// 通过实体对象的属性名称搜索绑定条目
        /// </summary>
        /// <param name="propertyName"></param>
        /// <returns></returns>
        public BindingItem FindItemByEntityProperty(object entity, string propertyName)
        {
            BindingItem empty = new BindingItem();

            empty.BindedEntity         = null;
            empty.BindedEntityProperty = "";
            empty.BindedView           = null;
            empty.BindedViewProperty   = null;

            foreach (BindingItem item in _items)
            {
                if (item.BindedEntityProperty.Equals(propertyName) && entity.Equals(item.BindedEntity))
                {
                    return(item);
                }
            }
            return(empty);
        }
Exemplo n.º 4
0
        /// <summary>
        /// 当View层数据变化时仅仅更新模型层数据
        /// </summary>
        /// <param name="msg"></param>
        public void OnViewValueChanged(PropertyMessage msg)
        {
            //1、查找entity属性对应的view组件
            BindingItem item = _bindingTable.FindItemByViewProperty(msg.TargetObject, msg.PropertyName);

            if (item.BindedEntity == null ||
                item.BindedEntityProperty.Equals("") ||
                item.BindedView == null ||
                item.BindedViewProperty.Equals(""))
            {
                throw new BindingException("未能找到绑定记录");
            }

            //2、给entity赋值为组件值
            if (msg.NewValue is float)
            {
                OnViewValueChangedStuff <float>(this.DataEntity, item.BindedEntityProperty, (float)msg.NewValue);
            }
            else if (msg.NewValue is double)
            {
                OnViewValueChangedStuff <double>(this.DataEntity, item.BindedEntityProperty, (double)msg.NewValue);
            }
            else if (msg.NewValue is decimal)
            {
                OnViewValueChangedStuff <decimal>(this.DataEntity, item.BindedEntityProperty, (decimal)msg.NewValue);
            }
            else if (msg.NewValue is string)
            {
                OnViewValueChangedStuff <string>(this.DataEntity, item.BindedEntityProperty, (string)msg.NewValue);
            }
            else if (msg.NewValue is bool)
            {
                OnViewValueChangedStuff <bool>(this.DataEntity, item.BindedEntityProperty, (bool)msg.NewValue);
            }
            else if (msg.NewValue is char)
            {
                OnViewValueChangedStuff <char>(this.DataEntity, item.BindedEntityProperty, (char)msg.NewValue);
            }
            else if (msg.NewValue is sbyte)
            {
                OnViewValueChangedStuff <sbyte>(this.DataEntity, item.BindedEntityProperty, (sbyte)msg.NewValue);
            }
            else if (msg.NewValue is short)
            {
                OnViewValueChangedStuff <short>(this.DataEntity, item.BindedEntityProperty, (short)msg.NewValue);
            }
            else if (msg.NewValue is int)
            {
                OnViewValueChangedStuff <int>(this.DataEntity, item.BindedEntityProperty, (int)msg.NewValue);
            }
            else if (msg.NewValue is long)
            {
                OnViewValueChangedStuff <long>(this.DataEntity, item.BindedEntityProperty, (long)msg.NewValue);
            }
            else if (msg.NewValue is byte)
            {
                OnViewValueChangedStuff <byte>(this.DataEntity, item.BindedEntityProperty, (byte)msg.NewValue);
            }
            else if (msg.NewValue is ushort)
            {
                OnViewValueChangedStuff <ushort>(this.DataEntity, item.BindedEntityProperty, (ushort)msg.NewValue);
            }
            else if (msg.NewValue is uint)
            {
                OnViewValueChangedStuff <uint>(this.DataEntity, item.BindedEntityProperty, (uint)msg.NewValue);
            }
            else if (msg.NewValue is ulong)
            {
                OnViewValueChangedStuff <ulong>(this.DataEntity, item.BindedEntityProperty, (ulong)msg.NewValue);
            }
        }