C#
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections.ObjectModel; // подключаем ObservableCollection
using System.Collections.Specialized; // подключаем NotifyCollectionChangedEventArgs
namespace ConsoleApplication1
{
class User
{
public string Name { get; set; }
}
class Program
{
static void Main(string[] args)
{
// создаем ObservableCollection
ObservableCollection<User> users = new ObservableCollection<User>
{
new User { Name = "Evgeni"},
new User { Name = "Slava"},
new User { Name = "Boris"}
};
// указываем обработчик(будет вызываться если добавить, удалить, поменять элемент)
users.CollectionChanged += Users_CollectionChanged;
// добавляем элемент
users.Add(new User { Name = "Sergei" });
// удаляем элемент
users.RemoveAt(1);
// заменяем элемент
users[0] = new User { Name = "Petia" };
// показываем все элементы на экране
foreach (User user in users)
{
Console.WriteLine(user.Name);
}
}
private static void Users_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
// срабатывает при добавлении элемента
if (e.Action==NotifyCollectionChangedAction.Add)
{
User newUser = e.NewItems[0] as User;
Console.WriteLine("Добавлен новый объект: {0}", newUser.Name);
}
// срабатывает при удалении элемента
else if (e.Action==NotifyCollectionChangedAction.Remove)
{
User oldUser = e.OldItems[0] as User;
Console.WriteLine("Удален объект: {0}", oldUser.Name);
}
// срабатывает при замене элемента
else if (e.Action==NotifyCollectionChangedAction.Replace)
{
User replacedUser = e.OldItems[0] as User;
User replacingUser = e.NewItems[0] as User;
Console.WriteLine("Объект {0} заменен объектом {1}", replacedUser.Name, replacingUser.Name);
}
}
}
}