Example #1
0
 /// <summary>
 /// Raises the <see cref="VectorChanged"/> event.
 /// </summary>
 public virtual void RaiseVectorChanged(IVectorChangedEventArgs e)
 {
     if (_updating <= 0)
     {
         VectorChanged?.Invoke(this, e);
         OnPropertyChanged("Count");
     }
 }
Example #2
0
        public new object this[int index]
        {
            get
            {
                Debug.WriteLine("ObservableVector.Index {0}", index);

                T value;
                if (!_cache.TryGetValue(_previousIndex = index, out value))
                {
                    Task.Run((Func <Task>)(async() =>
                    {
                        Debug.WriteLine("ObservableVector.StartLoadAsync {0}", index);

                        if (_chunks.Contains(index))
                        {
                            _chunks.Push(index);
                        }
                        if (Busy)
                        {
                            return;
                        }
                        try
                        {
                            var i = (_chunks.Any()) ? _chunks.Pop() : index;
                            if (Math.Abs(i - _previousIndex) >= _cacheLimit)
                            {
                                return;
                            }
                            Busy = true;

                            var items = await Provider.LoadAsync((uint)i, _takeSize);
                            foreach (var item in items)
                            {
                                if (_cache.ContainsKey(item.Key))
                                {
                                    _cache[item.Key] = item.Value;
                                }
                                else
                                {
                                    _cache.Add(item.Key, item.Value);
                                }
                                base.Add((T)item.Value);
                                var current = (uint)IndexOf(item.Value);
                                VectorChanged?.Invoke(this, new VectorChangedEventArgs {
                                    CollectionChange = CollectionChange.ItemInserted, Index = current
                                });
                            }
                        }
                        catch { Debugger.Break(); }
                        finally { Busy = false; }
                    }));
                }
                return(value);
            }
            set { throw new NotImplementedException(); }
        }
Example #3
0
 /// <summary>
 /// Vector changed event
 /// </summary>
 /// <param name="e">event args</param>
 protected virtual void OnVectorChanged(IVectorChangedEventArgs e)
 {
     if (_deferCounter > 0)
     {
         return;
     }
     VectorChanged?.Invoke(this, e);
     // ReSharper disable once ExplicitCallerInfoArgument
     OnPropertyChanged(nameof(Count));
 }
 void RaiseChanged(bool count, bool items, CollectionChange change, uint index)
 {
     if (count)
     {
         this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Count)));
     }
     if (items)
     {
         this.PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Items)));
     }
     VectorChanged?.Invoke(this, new VectorChangedEventArgs {
         CollectionChange = change, Index = index
     });
 }
Example #5
0
        private void Slider_ValueChanged(object sender, RoutedPropertyChangedEventArgs <double> e)
        {
            switch ((sender as Slider).Name)
            {
            case "X":
                Vector.X = e.NewValue;
                break;

            case "Y":
                Vector.Y = e.NewValue;
                break;

            case "Z":
                Vector.Z = e.NewValue;
                break;

            default: throw new Exception($"Invalid Slider Name: {(sender as Slider).Name}");
            }
            Label.Content = (Name != null ? $"{Name}: " : "") + $"X={SliderX.Value}, Y={SliderY.Value}, Z={SliderZ.Value}";
            VectorChanged?.Invoke(this, Vector);
        }
Example #6
0
        public bool Remove(object item)
        {
            var vectorChanged = VectorChanged;

            if (vectorChanged == null)
            {
                return(_inner.Remove(item));
            }
            else
            {
                var index = _inner.IndexOf(item);
                if (index >= 0 &&
                    _inner.Remove(item))
                {
                    VectorChanged.TryRaiseRemoved(this, index);
                    return(true);
                }
                else
                {
                    return(false);
                }
            }
        }
Example #7
0
 private void RaiseVectorChanged(CollectionChange change, int index)
 {
     VectorChanged?.Invoke(this, new VectorChangedEventArgs(change, (uint)index));
     UntypedVectorChanged?.Invoke(this, new VectorChangedEventArgs(change, (uint)index));
 }
Example #8
0
 public void Clear()
 {
     ThrowIfItemsSourceSet();
     _inner.Clear();
     VectorChanged.TryRaiseReseted(this);
 }
Example #9
0
 public void RaiseVectorChanged(IVectorChangedEventArgs args)
 {
     VectorChanged?.Invoke(this, args);
 }
Example #10
0
 public void RemoveAt(int index)
 {
     ThrowIfItemsSourceSet();
     _inner.RemoveAt(index);
     VectorChanged.TryRaiseRemoved(this, index);
 }
Example #11
0
 public void Add(object item)
 {
     ThrowIfItemsSourceSet();
     _inner.Add(item);
     VectorChanged.TryRaiseInserted(this, _inner.Count - 1);
 }
 private void userList_VectorChanged(IBindableObservableVector vector, object e)
 {
     VectorChanged?.Invoke(this, e);
     OnPropertyChanged(nameof(Count));
 }
Example #13
0
 public void Insert(int index, object item)
 {
     ThrowIfItemsSourceSet();
     _inner.Insert(index, item);
     VectorChanged.TryRaiseInserted(this, index);
 }
 private void OnVectorChanged(IObservableVector <T> sender, IVectorChangedEventArgs @event)
 {
     VectorChanged?.Invoke(this, @event);
 }
Example #15
0
 public void RemoveAt(int index)
 {
     _inner.RemoveAt(index);
     VectorChanged.TryRaiseRemoved(this, index);
 }
 private void OnSourceCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
 {
     VectorChanged?.Invoke(this as IObservableVector <object>, e.ToVectorChangedEventArgs());
 }
Example #17
0
 public void Clear()
 {
     _inner.Clear();
     VectorChanged.TryRaiseReseted(this);
 }
Example #18
0
 public void Add(object item)
 {
     _inner.Add(item);
     VectorChanged.TryRaiseInserted(this, _inner.Count - 1);
 }
Example #19
0
 private void OnVectorChanged()
 {
     VectorChanged?.Invoke(null, null);
 }
Example #20
0
 protected void OnVectorChanged(ChangedArgs e) => VectorChanged?.Invoke(this, e);
Example #21
0
 private void DoCollectionChanged(CollectionChangedEventArgs e)
 {
     revision++;
     VectorChanged?.Invoke(this, e);
 }
Example #22
0
 public void Insert(int index, object item)
 {
     _inner.Insert(index, item);
     VectorChanged.TryRaiseInserted(this, index);
 }