# Astuce : ObservableCollection HasItems

> Souvent, lorsque j’affiche des listes, si celles ci sont vides j’affiche un texte alternatif. Avant je devais toujours faire un converter pour pouvoir afficher ce…

- Auteur: Jérôme Giacomini
- Langue: fr
- URL canonique: [Astuce : ObservableCollection HasItems](https://jeromegiacomini.net/fr/articles/2015/05/13/tips-observablecollection-hasitems)
- Publié le: 2015-05-13
- Dernière modification: 2026-09-05
- Thèmes: C#

Souvent, lorsque j’affiche des listes, si celles-ci sont vides j’affiche un texte alternatif.

Avant je devais toujours faire un converter pour pouvoir afficher ce texte.

Et puis j’ai eu l’idée d’hériter d’ObservableCollection pour lui rajouter la propriété HasItem.

Désormais je me bind directement à la propriété HasItem pour afficher ou non ce texte alternatif.

Qu’en pensez-vous?

```csharp

public class HasItemObservableCollection<T> : ObservableCollection<T>
    {
        bool _hasItem;

        protected override void ClearItems()
        {
            base.ClearItems();
            FireHasItemChanged();
        }

        protected override void RemoveItem(int index)
        {
            base.RemoveItem(index);
            FireHasItemChanged();
        }

        protected override void InsertItem(int index, T item)
        {
            base.InsertItem(index, item);
            FireHasItemChanged();
        }

        void FireHasItemChanged()
        {
            bool oldHasItem = _hasItem;
            _hasItem = Items.Any();
            if (oldHasItem != HasItem)
                base.OnPropertyChanged(new System.ComponentModel.PropertyChangedEventArgs("HasItem"));
        }

        /// <summary>
        /// Obtient si la collection à des Items
        /// </summary>
        public bool HasItem
        {
            get
            {
                return _hasItem;
            }
        }
    }
```
