Esempio n. 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");
     }
 }
Esempio n. 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(); }
        }
Esempio n. 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
     });
 }
Esempio n. 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);
        }
Esempio n. 6
0
 private void DoCollectionChanged(CollectionChangedEventArgs e)
 {
     revision++;
     VectorChanged?.Invoke(this, e);
 }
 private void OnSourceCollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
 {
     VectorChanged?.Invoke(this as IObservableVector <object>, e.ToVectorChangedEventArgs());
 }
Esempio n. 8
0
 private void RaiseVectorChanged(CollectionChange change, int index)
 {
     VectorChanged?.Invoke(this, new VectorChangedEventArgs(change, (uint)index));
     UntypedVectorChanged?.Invoke(this, new VectorChangedEventArgs(change, (uint)index));
 }
 private void userList_VectorChanged(IBindableObservableVector vector, object e)
 {
     VectorChanged?.Invoke(this, e);
     OnPropertyChanged(nameof(Count));
 }
Esempio n. 10
0
 protected void OnVectorChanged(ChangedArgs e) => VectorChanged?.Invoke(this, e);
Esempio n. 11
0
 private void OnVectorChanged()
 {
     VectorChanged?.Invoke(null, null);
 }
Esempio n. 12
0
 private void OnVectorChanged(IObservableVector <T> sender, IVectorChangedEventArgs @event)
 {
     VectorChanged?.Invoke(this, @event);
 }
Esempio n. 13
0
 public void RaiseVectorChanged(IVectorChangedEventArgs args)
 {
     VectorChanged?.Invoke(this, args);
 }