예제 #1
0
        private void SetViewCell(TModel model, TView view, IWriteableArray <TViewItem> array, int[] arrayIndexes, TModelItem newModelItem)
        {
            TViewItem oldViewItem = array[arrayIndexes];

            _viewItemDisposer?.Invoke(oldViewItem);

            array[arrayIndexes] = _itemConverter(model, newModelItem, view, oldViewItem);
        }
예제 #2
0
        static public void Fill <T>(this IWriteableArray <T> array, T value, IEnumerable <int[]> indexes = null)
        {
            IEnumerable <int[]> indexEnumerable = indexes ?? array.Indexes();

            foreach (int[] index in indexEnumerable)
            {
                array[index] = value;
            }
        }
예제 #3
0
        static public void Fill <T>(this IWriteableArray <T> array, Func <T, int[], T> valueFactory, IEnumerable <int[]> indexes = null)
        {
            IEnumerable <int[]> indexEnumerable = indexes ?? array.Indexes();

            foreach (int[] index in indexEnumerable)
            {
                array[index] = valueFactory(array[index], index);
            }
        }
예제 #4
0
        private void SetViewCells(TModel model, TView view, IndexRange indexRange, System.Array newValues)
        {
            IWriteableArray <TViewItem> array = _arrayGetter(view);

            int[] arrayIndexes    = indexRange.GetResetIndex();
            int[] newValueIndexes = newValues.GetResetIndex();

            while (newValues.MoveIndex(newValueIndexes))
            {
                if (!indexRange.MoveIndex(arrayIndexes))
                {
                    throw new InvalidOperationException();
                }

                var newModelItem = (TModelItem)newValues.GetValue(newValueIndexes);
                SetViewCell(model, view, array, arrayIndexes, newModelItem);
            }

            if (indexRange.MoveIndex(arrayIndexes))
            {
                throw new InvalidOperationException();
            }
        }
예제 #5
0
 static public IWriteableArray <TNewValue> Retype <TOldValue, TNewValue>(this IWriteableArray <TOldValue> array, Func <TOldValue, TNewValue> getter, Action <TOldValue, TNewValue> setter)
 {
     return(new RetypedWriteableArray <TOldValue, TNewValue>(array, getter, setter));
 }