Astuce : ObservableCollection HasItems

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 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?

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;
            }
        }
    }

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Pin It on Pinterest