ObservableCollection<T>

Słownik kwalifikacji INF.04 - Projektowanie, programowanie i testowanie aplikacji

Co to jest ObservableCollection?

ObservableCollection<T> to kolekcja w języku C# dostępna w przestrzeni nazw System.Collections.ObjectModel. Służy do przechowywania elementów podobnie jak lista, ale dodatkowo informuje powiązany interfejs użytkownika o zmianach w kolekcji.

Jest szczególnie często używana w aplikacjach WPF, Xamarin, MAUI oraz we wzorcu MVVM, gdzie dane są wiązane z kontrolkami interfejsu, np. ListBox, ComboBox, DataGrid.

Najważniejsza cecha

ObservableCollection<T> automatycznie zgłasza zmiany takie jak:

  • dodanie elementu,
  • usunięcie elementu,
  • wyczyszczenie kolekcji,
  • zmiana zawartości kolekcji.

Dzieje się to dzięki implementacji interfejsu INotifyCollectionChanged.

Przykład użycia

using System.Collections.ObjectModel;

public class ViewModel
{
    public ObservableCollection<string> Produkty { get; set; }

    public ViewModel()
    {
        Produkty = new ObservableCollection<string>();
        Produkty.Add("Monitor");
        Produkty.Add("Klawiatura");
    }
}

Jeżeli kolekcja Produkty jest powiązana z kontrolką w XAML, np. ListBox, to dodanie nowego elementu przez Add() może automatycznie odświeżyć widok.

Przykład w XAML

<ListBox ItemsSource="{Binding Produkty}" />

ObservableCollection a List

List<T> przechowuje dane, ale nie informuje interfejsu użytkownika o zmianach. Jeśli dodamy element do List<T>, kontrolka może się nie odświeżyć automatycznie.

ObservableCollection<T> jest więc właściwym wyborem, gdy kolekcja ma być źródłem danych dla elementów UI i widok ma reagować na zmiany.

W kontekście egzaminu

Jeżeli pytanie mówi o kolekcji, która powiadamia element interfejsu użytkownika o dodaniu, usunięciu lub zmianie zawartości, poprawną odpowiedzią jest ObservableCollection.