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); }
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; } }
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); } }
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(); } }
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)); }