Пример #1
0
        public void UpdateSelection(OptionValueChangedEventArgs e)
        {
            if (e == null)
            {
                return;
            }
            if (inUpdate)
            {
                return;
            }
//      if (!optionItem.IsAlive) {
//        return;
//      }

//      IOptionItem oi = (IOptionItem)optionItem.Target;
            object value = e.NewValue;

            if (value == OptionItem.VALUE_UNDEFINED)
            {
                //no change
                return;
            }
            try {
                inUpdate = true;
                //lock selection for the duration of our update
                selection.BeginValueUpdate();

                ICollection <IPropertyItemDescriptor <T> > descriptors;
                descriptors = selection.Selection;

                bool hasChanged = false;
                foreach (IPropertyItemDescriptor <T> descriptor in descriptors)
                {
                    //get the propertyItem from the current lookup
                    IPropertyMap map = descriptor.Properties;
                    if (map == null)
                    {
                        continue;
                    }

                    //get value from current selection item
                    IPropertyItem item   = map.GetEntry(virtualPropertyName);
                    IValueSetter  setter = item != null ? item.Setter : null;
                    if (setter == null || !setter.CanSet())
                    {
                        continue;
                    }
                    setter.SetValue(value);
                    hasChanged = true;
                }

                if (hasChanged)
                {
                    selection.UpdateSelectedItems();
                }
            } finally {
                selection.EndValueUpdate();
                inUpdate = false;
            }
        }
Пример #2
0
        public virtual object CreateInstance(IDataReader reader)
        {
            if (this._checkNullOrdinal != null)
            {
                if (reader.IsDBNull(this._checkNullOrdinal.Value))
                {
                    return(null);
                }
            }

            this._readerOrdinalEnumerator.Reset();
            this._objectActivatorEnumerator.Reset();

            object obj = null;

            try
            {
                obj = this._instanceCreator(reader, this._readerOrdinalEnumerator, this._objectActivatorEnumerator);
            }
            catch (Exception ex)
            {
                if (this._readerOrdinalEnumerator.CurrentOrdinal >= 0)
                {
                    throw new DataException(AppendErrorMsg(reader, this._readerOrdinalEnumerator.CurrentOrdinal), ex);
                }

                throw;
            }

            IValueSetter memberSetter = null;

            try
            {
                int count = this._memberSetters.Count;
                for (int i = 0; i < count; i++)
                {
                    memberSetter = this._memberSetters[i];
                    memberSetter.SetValue(obj, reader);
                }
            }
            catch (Exception ex)
            {
                MappingMemberBinder binder = memberSetter as MappingMemberBinder;
                if (binder != null)
                {
                    throw new DataException(AppendErrorMsg(reader, binder.Ordinal), ex);
                }

                throw;
            }

            return(obj);
        }
Пример #3
0
        } // End of ImplBoundValueAlign (...)

        private Boolean _BoundValueSetterAlign()
        {
            IValueSetter setter = ValueBinder.BoundObjectValue as IValueSetter;

            if (setter == null)
            {
                return(false);
            }

            setter.SetValue(Value);

            return(true);
        } // End of ImplBoundValueAlign (...)
 public void SetValue(object value)
 {
     if (cloner != null && newInstanceSetter != null)
     {
         TInnerSubject currentValue;
         currentValue = getTargetHandler();
         TInnerSubject newSubject = cloner(currentValue);
         if (!ReferenceEquals(newSubject, currentValue))
         {
             newInstanceSetter(newSubject);
         }
     }
     {
         setter.SetValue(value);
     }
 }
            public void SetValue(object value)
            {
                T1 newInstance = parent.parent.CreateCopy(parent, parent.CurrentInstance);

                parent.SetTempInstance(newInstance);
                try {
                    if (setter.CanSet())
                    {
                        setter.SetValue(value);
                    }
                    else
                    {
                        return; // don't commit it.
                    }
                } finally {
                    parent.ResetTempInstance();
                }
                parent.SetNewInstance(newInstance);
            }