Example #1
0
        public IEnumerable <ISourceValue> EnumerateFields()
        {
/*
 *          var current = this;
 *          while (true)
 *          {
 *              yield return current;
 *              if (!(current.Source is UnknownFieldValueSource unknownFieldValueSource))
 *              {
 *                  break;
 *              }
 *
 *              current = unknownFieldValueSource;
 *          }
 */

            ISourceValue current = this;

            while (current != null)
            {
                yield return(current);

                current = current is UnknownFieldValueSource unknownFieldValueSource
                    ? unknownFieldValueSource.Source
                    : null;
            }
        }
 static ObserverBase()
 {
     CollectionChangedEvent = typeof(INotifyCollectionChanged).GetEventEx("CollectionChanged", MemberFlags.Instance | MemberFlags.Public);
     ValueChangedEvent      = typeof(ISourceValue).GetEventEx("ValueChanged", MemberFlags.Instance | MemberFlags.Public);
     DisposedException      = ExceptionManager.ObjectDisposed(typeof(ObserverBase));
     EmptyDisposable        = new ActionToken(() => { });
     EmptySource            = new BindingResourceObject(null);
 }
Example #3
0
 public XamlResourceWrapper(object target, string key, IBindingMemberInfo rootMember, ISourceValue globalResource)
 {
     _key            = key;
     _value          = BindingConstants.UnsetValue;
     _reference      = ServiceProvider.WeakReferenceFactory(target);
     _unsubscriber   = rootMember.TryObserve(target, this);
     _globalResource = globalResource;
 }
 public XamlResourceWrapper(object target, string key, IBindingMemberInfo rootMember, ISourceValue globalResource)
 {
     _key = key;
     _value = BindingConstants.UnsetValue;
     _reference = ServiceProvider.WeakReferenceFactory(target);
     _unsubscriber = rootMember.TryObserve(target, this);
     _globalResource = globalResource;
 }
Example #5
0
            private void OnValueChanged(ISourceValue sender, EventArgs args)
            {
                var handler = ValueChanged;

                if (handler != null)
                {
                    handler(this, args);
                }
            }
Example #6
0
        public virtual void AddObject(string name, ISourceValue obj, bool rewrite)
        {
            Should.NotBeNullOrWhitespace(name, nameof(name));
            Should.NotBeNull(obj, nameof(obj));
            DynamicResourceObject value;

            lock (_objects)
            {
                if (!_objects.TryGetValue(name, out value))
                {
                    value          = new DynamicResourceObject();
                    _objects[name] = value;
                }
            }
            value.SetValue(obj, name, rewrite);
        }
Example #7
0
            public void SetValue(ISourceValue value, string name, bool rewrite)
            {
                var oldValue = _value;

                if (oldValue != null)
                {
                    if (!rewrite)
                    {
                        throw ExceptionManager.ObjectInitialized("resource", oldValue.Value, "Name - " + name);
                    }
                    oldValue.ValueChanged -= OnValueChanged;
                }
                _value = value;
                if (value != null)
                {
                    value.ValueChanged += OnValueChanged;
                }
                OnValueChanged(null, EventArgs.Empty);
            }
 public virtual void AddObject(string name, ISourceValue obj, bool rewrite)
 {
     Should.NotBeNullOrWhitespace(name, nameof(name));
     Should.NotBeNull(obj, nameof(obj));
     DynamicResourceObject value;
     lock (_objects)
     {
         if (!_objects.TryGetValue(name, out value))
         {
             value = new DynamicResourceObject();
             _objects[name] = value;
         }
     }
     value.SetValue(obj, name, rewrite);
 }
 private void OnValueChanged(ISourceValue sender, EventArgs args)
 {
     ValueChanged?.Invoke(this, args);
 }
 public void SetValue(ISourceValue value, string name, bool rewrite)
 {
     var oldValue = _value;
     if (oldValue != null)
     {
         if (!rewrite)
             throw ExceptionManager.ObjectInitialized("resource", oldValue.Value, "Name - " + name);
         oldValue.ValueChanged -= OnValueChanged;
     }
     _value = value;
     if (value != null)
         value.ValueChanged += OnValueChanged;
     OnValueChanged(null, EventArgs.Empty);
 }
 private void OnValueChanged(ISourceValue sender, EventArgs args)
 {
     var handler = ValueChanged;
     if (handler != null)
         handler(this, args);
 }
Example #12
0
 private void OnValueChanged(ISourceValue sender, EventArgs args)
 {
     ValueChanged?.Invoke(this, args);
 }
Example #13
0
            private static void BindingContextChanged(ISourceValue value, EventArgs args)
            {
                var context = (IBindingContext)value;

                UpdataContext(null, context.Source as View, context);
            }
Example #14
0
 public UnknownFieldValueSource(ISourceValue source, string name)
 {
     Source = source;
     Name   = name;
 }
 /// <summary>
 ///     Adds the specified object.
 /// </summary>
 public virtual void AddObject(string name, ISourceValue obj, bool rewrite)
 {
     Should.NotBeNullOrWhitespace(name, "name");
     Should.NotBeNull(obj, "obj");
     lock (_objects)
     {
         DynamicResourceObject value;
         if (!_objects.TryGetValue(name, out value))
         {
             value = new DynamicResourceObject();
             _objects[name] = value;
         }
         value.SetValue(obj, name, rewrite);
     }
     lock (_instanceObjects)
     {
         for (int i = 0; i < _instanceObjects.Count; i++)
         {
             var resourceObject = (DynamicResourceObject)_instanceObjects[i].Target;
             if (resourceObject == null)
             {
                 _instanceObjects.RemoveAt(i);
                 --i;
             }
             else
                 resourceObject.OnResourceAdded(obj, name);
         }
     }
 }
 public void OnResourceAdded(ISourceValue value, string name)
 {
     if (_name == name)
         SetValue(value, name, true);
 }