private bool CanExAddImage(object arg)
        {
            // On peut ajouter une image que si l'utilisateur a sélectionné une entité dans la grille
            ChampImage champImage = arg as ChampImage;

            return(champImage != null && champImage.DataContext != null);
        }
        private bool CanExEraseImage(object arg)
        {
            // On peut supprimer que si il y a déjà une image dans le champ
            ChampImage champImage = arg as ChampImage;

            return(champImage != null && champImage.img.Source != null);
        }
        /// <summary>
        /// Construit sous forme d'une chaine de caractères correctement formatées les extensions possibles
        /// </summary>
        /// <param name="champ">Champ Image</param>
        /// <returns>Retourne une chaine correctement formattée</returns>
        private string BuildExtensionFormat(ChampImage champ)
        {
            StringBuilder stringBuilder = new StringBuilder();
            string        text          = string.Empty;

            if (champ.ListExtension != null)
            {
                string[] listExtension = champ.ListExtension;
                for (int i = 0; i < listExtension.Length; i++)
                {
                    string text2 = listExtension[i];
                    stringBuilder.Append(text2).Append(" Files (*.").Append(text2.ToLower()).Append(")|*.").Append(text2.ToLower()).Append("|");
                }
                text = stringBuilder.ToString();
                text = text.Substring(0, text.Length - 1);
            }
            return(text);
        }
        private void ExAddImage(object obj)
        {
            ChampImage champImage = obj as ChampImage;

            if (champImage != null)
            {
                OpenFileDialog openFileDialog = new OpenFileDialog();

                // Construit la liste des extensions souhaitées
                string text = this.BuildExtensionFormat(champImage);
                openFileDialog.Filter           = ((!string.IsNullOrEmpty(text)) ? text : "All files (*.*)|*.*");
                openFileDialog.FilterIndex      = 2;
                openFileDialog.RestoreDirectory = true;

                if (openFileDialog.ShowDialog() == true)
                {
                    try
                    {
                        Stream stream;
                        if ((stream = openFileDialog.OpenFile()) != null)
                        {
                            using (stream)
                            {
                                byte[] array = new byte[stream.Length];
                                stream.Read(array, 0, (int)stream.Length);
                                champImage.img.Source = (new ConverterImage().Convert(array, null, null, null) as ImageSource);
                            }
                        }
                    }
                    catch (Exception)
                    {
                        return;
                    }
                }
            }
        }
        private void ExEraseImage(object obj)
        {
            ChampImage champImage = obj as ChampImage;

            champImage.img.Source = null;
        }