/// <summary>
        /// Applique la suppression de la caractéristique courante.
        /// </summary>
        private void Remove()
        {
            // Ajoute la carac aux disponibles (supp des courantes)
            _selectedAvailableItem = _selectedCurrentItem;
            _availablesCaracs.Add(_selectedCurrentItem);
            _currentCaracs.Remove(_selectedCurrentItem);

            // Met à jour la sélection
            if (_currentCaracs.Count > 0)
            {
                _selectedCurrentItem = _currentCaracs[0];
            }
            else
            {
                _selectedCurrentItem = null;
            }

            OnPropertyChanged("SelectedAvailableCarac");
            OnPropertyChanged("SelectedCurrentCarac");
        }
        /// <summary>
        /// Constructeur.
        /// </summary>
        /// <param name="caracsAvailableModel">Liste de caractéristiques disponibles contenus dans le modèle.</param>
        /// <param name="caracsModel">Liste de caractéristiques possédées.</param>
        public CaracsModifViewModel(List <Caracteristique> caracsAvailableModel, List <Caracteristique> caracsModel)
        {
            // Initialise les collections du modèle
            _availablesCaracs = new ObservableCollection <CaracViewModel>();
            _currentCaracs    = new ObservableCollection <CaracViewModel>();

            if (caracsModel != null)
            {
                // Liste des caracs déjà utilisées
                foreach (Caracteristique carac in caracsModel)
                {
                    _currentCaracs.Add(new CaracViewModel(carac));

                    int index;
                    if ((index = caracsAvailableModel.FindIndex(c => c.ID == carac.ID)) > -1)
                    {
                        caracsAvailableModel.RemoveAt(index);
                    }
                }
            }

            // Reste de la liste des compétences disponibles
            foreach (Caracteristique carac in caracsAvailableModel)
            {
                _availablesCaracs.Add(new CaracViewModel(carac));
            }


            // Auto sélectionne la première caractéristique disponible s'il y en a un
            if (_availablesCaracs.Count > 0)
            {
                _selectedAvailableItem = _availablesCaracs[0];
            }
            // Auto sélectionne la première caractéristique utilisée s'il y en a un
            if (_currentCaracs.Count > 0)
            {
                _selectedCurrentItem = _currentCaracs[0];
            }
        }
        /// <summary>
        /// Constructeur.
        /// </summary>
        /// <param name="caracsAvailableModel">Liste de caractéristiques disponibles contenus dans le modèle.</param>
        /// <param name="caracsModel">Liste de caractéristiques possédées.</param>
        public CaracsModifViewModel(List<Caracteristique> caracsAvailableModel, List<Caracteristique> caracsModel)
        {
            // Initialise les collections du modèle
            _availablesCaracs = new ObservableCollection<CaracViewModel>();
            _currentCaracs = new ObservableCollection<CaracViewModel>();

            if (caracsModel != null)
            {
                // Liste des caracs déjà utilisées
                foreach (Caracteristique carac in caracsModel)
                {
                    _currentCaracs.Add(new CaracViewModel(carac));

                    int index;
                    if ((index = caracsAvailableModel.FindIndex(c => c.ID == carac.ID)) > -1)
                    {
                        caracsAvailableModel.RemoveAt(index);
                    }
                }
            }

            // Reste de la liste des compétences disponibles
            foreach (Caracteristique carac in caracsAvailableModel)
            {
                _availablesCaracs.Add(new CaracViewModel(carac));
            }

            // Auto sélectionne la première caractéristique disponible s'il y en a un
            if (_availablesCaracs.Count > 0)
            {
                _selectedAvailableItem = _availablesCaracs[0];
            }
            // Auto sélectionne la première caractéristique utilisée s'il y en a un
            if (_currentCaracs.Count > 0)
            {
                _selectedCurrentItem = _currentCaracs[0];
            }
        }
        /// <summary>
        /// Applique la suppression de la caractéristique courante.
        /// </summary>
        private void Remove()
        {
            // Ajoute la carac aux disponibles (supp des courantes)
            _selectedAvailableItem = _selectedCurrentItem;
            _availablesCaracs.Add(_selectedCurrentItem);
            _currentCaracs.Remove(_selectedCurrentItem);

            // Met à jour la sélection
            if (_currentCaracs.Count > 0)
            {
                _selectedCurrentItem = _currentCaracs[0];
            }
            else
            {
                _selectedCurrentItem = null;
            }

            OnPropertyChanged("SelectedAvailableCarac");
            OnPropertyChanged("SelectedCurrentCarac");
        }