Exemplo n.º 1
0
        private void TargetOnCollectionChanged(object sender, NotifyCollectionChangedEventArgs args)
        {
            switch (args.Action)
            {
            case NotifyCollectionChangedAction.Add:
                if (args.NewItems != null)
                {
                    foreach (var item in args.NewItems)
                    {
                        AddItem(sender, item);
                    }
                }
                else
                {
                    throw new Exception("NewItems was null");
                }
                break;

            case NotifyCollectionChangedAction.Remove:
                if (args.OldItems != null)
                {
                    foreach (var item in args.OldItems)
                    {
                        RemoveItem(sender, item);
                    }
                }
                else
                {
                    throw new Exception("OldItems was null");
                }
                break;

            case NotifyCollectionChangedAction.Move:
            case NotifyCollectionChangedAction.Replace:
            case NotifyCollectionChangedAction.Reset:
                ExtendedPropertyChanged?.Invoke(sender, new ExtendedPropertyChangedEventArgs("Item", null, null));
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Exemplo n.º 2
0
            public void InitialRegisterValue(Type type)
            {
                if (_property.DeclaringType != type)
                {
                    return;
                }
                //if (ExtendedPropertyChanged == null) return;

                if (_target.GetType().GetProperty(Name).GetMethod != _property.GetMethod)
                {
                    return;
                }

                var value    = _property.GetValue(_target);
                var oldValue = Interlocked.Exchange(ref _value, value);

                if (ReferenceEquals(oldValue, value))
                {
                    return;
                }

                ExtendedPropertyChanged?.Invoke(_target, new ExtendedPropertyChangedEventArgs(Name, oldValue, _value));
            }
Exemplo n.º 3
0
 private void RemoveItem(object sender, object item)
 {
     ExtendedPropertyChanged?.Invoke(sender, new ExtendedPropertyChangedEventArgs("Item", item, null));
 }