Язык программирования C#9 и платформа .NET5 - Троелсен Эндрю
На нашем сайте KnigaRead.com Вы можете абсолютно бесплатно читать книгу онлайн Троелсен Эндрю, "Язык программирования C#9 и платформа .NET5" бесплатно, без регистрации.

Класс
ObservableCollection<T>
ReadOnlyObservableCollection<T>
Работа с классом ObservableCollection<T>
Создайте новый проект консольного приложения по имени
FunWithObservableCollections
System.Collections.ObjectModel
ObservableCollection<T>
List<T>
ObservableCollection<T
CollectionChanged
Подобно любому другому событию событие
CollectionChanged
NotifyCollectionChangedEventHandler
object
NotifyCollectionChangedEventArgs
Person
CollectionChanged
using System;
using System.Collections.ObjectModel;
using System.Collections.Specialized;
using FunWithObservableCollections;
// Сделать коллекцию наблюдаемой
// и добавить в нее несколько объектов Person.
ObservableCollection<Person> people = new ObservableCollection<Person>()
{
new Person{ FirstName = "Peter", LastName = "Murphy", Age = 52 },
new Person{ FirstName = "Kevin", LastName = "Key", Age = 48 },
};
// Привязаться к событию CollectionChanged.
people.CollectionChanged += people_CollectionChanged;
static void people_CollectionChanged(object sender,
System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
throw new NotImplementedException();
}
Входной параметр
NotifyCollectionChangedEventArgs
OldIterns
NewItems
CollectionChanged
Action
NotifyCollectionChangedEventArgs
Action
NotifyCollectionChangedAction
public enum NotifyCollectionChangedAction
{
Add = 0,
Remove = 1,
Replace = 2,
Move = 3,
Reset = 4,
}
Ниже показана реализация обработчика событий
CollectionChanged
using
System.Collections.Specialized
using System.Collections.Specialized;
...
static void people_CollectionChanged(object sender,
NotifyCollectionChangedEventArgs e)
{
// Выяснить действие, которое привело к генерации события.
Console.WriteLine("Action for this event: {0}", e.Action);
// Было что-то удалено.
if (e.Action == NotifyCollectionChangedAction.Remove)
{
Console.WriteLine("Here are the OLD items:"); // старые элементы
foreach (Person p in e.OldItems)
{
Console.WriteLine(p.ToString());
}
Console.WriteLine();
}
// Было что-то добавлено.
if (e.Action == NotifyCollectionChangedAction.Add)
{
// Теперь вывести новые элементы, которые были вставлены.
Console.WriteLine("Here are the NEW items:"); // Новые элементы
foreach (Person p in e.NewItems)
{