Я просматривал сайт Microsoft и застал меня за чтением ObservableCollection .
Я придумал быстрый сценарий в своей голове и решил, что действительно могу что-то использоватьвот так.
Я создал пример класса, который наследуется от ObservableCollection , как показано здесь:
public class Ledger : ObservableCollection<LedgerEntry>, IEnumerable
{
private ObservableCollection<LedgerEntry> _items;
private decimal _currentBalance;
public Ledger(IEnumerable<LedgerEntry> items)
: base(items)
{
_items = new ObservableCollection<LedgerEntry>(items);
_currentBalance = 0m;
}
public new IEnumerator GetEnumerator()
{
var enumerator = _items.GetEnumerator();
while (enumerator.MoveNext())
{
var currentItem = enumerator.Current;
_currentBalance += currentItem.Amount;
currentItem.SetBalance(_currentBalance);
yield return currentItem;
}
}
}
Подумайте о банковском счете - я бы хотел, чтобы каждый элемент LedgerEntry содержалв коллекции, чтобы «знать» это баланс.
Любой, кто -
Что мне интересно, так это - учитывая приведенный выше пример, я вижу, что GetEnumerator () вызывается один раз, когда я связываю его с ListView, и теперь яМне любопытно - как на самом деле ListView извлекает / просматривает данные, содержащиеся в коллекции?
Я думал, что это будет повторять перечисляемое, но, очевидно, я ошибаюсь.
Любая информацияо том, как это работает?
Спасибо!