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); }
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; }
private void OnValueChanged(ISourceValue sender, EventArgs args) { var handler = ValueChanged; if (handler != null) { handler(this, args); } }
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); }
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) { 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); }
private static void BindingContextChanged(ISourceValue value, EventArgs args) { var context = (IBindingContext)value; UpdataContext(null, context.Source as View, context); }
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); }