/// <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); } }
/// <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); }
/// <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); }
/// <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); } }