Exemplo n.º 1
0
        private void OnNestedPropertyChanged(object sender, ModelPropertyChangedEventArgs e)
        {
            INotifyModelPropertyChanged s = sender as INotifyModelPropertyChanged;

            // if not recognized return
            if (s == null)
            {
                return;
            }

            // add root type name to nested property changed event
            // but only if we are not in cycle
            if (e.AddInChain(_indexOfLastChangedItem.ToString(),
                             new ModelPropertyChangedEventArgs.PropertyChangedChainEntry()
            {
                PropertyName = _indexOfLastChangedItem.ToString(),
                Position = _indexOfLastChangedItem,
                Container = this,
                Collection = this
            }
                             ))
            {
                // handle changed
                SetChaged();

                // notify
                _wes_ModelPropertyChanged?.Raise(this, e);
            }
        }
Exemplo n.º 2
0
        protected override void InsertItem(int index, T item)
        {
            SetChaged();

            (item as INotifyModelPropertyChanged).ModelPropertyChanged += OnNestedPropertyChanged;
            base.InsertItem(index, item);

            // notify whole object change
            ModelPropertyChangedEventArgs earg = new ModelPropertyChangedEventArgs(
                "*",
                new ModelPropertyChangedEventArgs.PropertyChangedChainEntry()
            {
                PropertyName = "*",
                Container    = this[index],
                Collection   = this
            }
                );

            earg.AddInChain(
                index.ToString(),
                new ModelPropertyChangedEventArgs.PropertyChangedChainEntry()
            {
                PropertyName    = index.ToString(),
                Container       = this,
                Position        = index, // in case of delete it will be out of bounds
                Collection      = this,
                ListChangedType = ListChangedType.ItemAdded
            }
                );
            _wes_ModelPropertyChanged?.Raise(
                this,
                earg
                );
        }
Exemplo n.º 3
0
        private void OnNestedPropertyChanged(object sender, ModelPropertyChangedEventArgs e)
        {
            INotifyModelPropertyChanged s = sender as INotifyModelPropertyChanged;

            // if not recognized return
            if (s == null)
            {
                return;
            }
            // add root type name to nested property changed event
            if (e.AddInChain(s.GetFieldName(),
                             new ModelPropertyChangedEventArgs.PropertyChangedChainEntry()
            {
                PropertyName = s.GetFieldName(),
                Container = this
            }
                             ))
            {
                // handle changed
                SetChaged();
                _wes_ModelPropertyChanged?.Raise(this, e);
            }
        }