L'objet Visual spécifié est déjà un enfant d'un autre objet
Fermé
Reisors
Messages postés153Date d'inscriptionlundi 11 février 2008StatutMembreDernière intervention 4 septembre 2013
-
4 sept. 2013 à 21:12
Bonjour,
Totalement bloqué je m'en remet à vous, j'ai une erreur :
"L'objet Visual spécifié est déjà un enfant d'un autre objet Visual ou la racine d'une classe CompositionTarget" que je n'arrive pas à résoudre.
C'est du C# WPF
Je veux surtout COMPRENDRE pourquoi l'erreur se déclenche donc merci de ne pas me fournir une solution alternative genre binding.
Contexte Global :
Voila j'ai créé une barre de recherche personnalisé qui permet de conservé un historique des recherches.
A droite du champ de recherche ce trouve un Grid qui va contenir une partie de l'historique sous forme de bouton (5 boutons donnant un accès rapide à 5 fiches) et plus loin une ListBox (qui apparaît à la demande) qui contient le reste de l'historique, sous forme de bouton également.
- histo.Historique est un dictionnaire de bouton trié (dernier fiche consulté, première place dans l'histo)
- this.lbHistorique est la ListBox
- this.gHistorique est le grid
- numberOfElementVisible est le nombres d'éléments que peu contenir mon grid, défini à 5
Contexte de l'apparition de l'erreur :
Rappel : le grid peut contenir 5 bouton.
Imaginons que je fasse 6 recherches dans cette ordre A,B,C,D,E,F
Dans le Grid on verra donc 5 bouton F,E,D,C,B et dans la ListBox on verra apparaître A résultat de la première recherche effectué.
Maintenant je recherche A, bien sur A existe déjà dans l'histo donc je vais pas le remettre mais re-trier ma liste afin de faire apparaître A en première position.
Je vide alors mon grid et ma listBox pour réaffecter les bouton dans le nouvelle ordre :
A,F,E,D,C,B
Et c'est la que l'erreur apparaît, lorsque j'ajoute A dans le grid qui était auparavant dans ma listBox.
PS : L'erreur ce produit uniquement lorsque le bouton à été affecter à la listBox avant, si je fait la même chose avec un bouton qui est déjà dans le grid (B,C ou D par exemple), aucun souci.
L'erreur apparaît à la ligne :
"this.gHistorique.Children.Add(this.histo.Historique.ElementAt(i).Value.Element);"
Voici mon code :
public void addToHistorique(String ContentElement, int numSociete)
{
this.createNewHistoryElement(ContentElement, numSociete);
this.lbHistorique.Items.Clear();
this.gHistorique.Children.Clear();
for(int i = 0 ; i<histo.Historique.Count ; i++)
{
if (i < numberOfElementVisible)
{
Grid.SetColumn(this.histo.Historique.ElementAt(i).Value.Element,i);
this.gHistorique.Children.Add(this.histo.Historique.ElementAt(i).Value.Element);
}
else
{
this.lbHistorique.Items.Add(this.histo.Historique.ElementAt(i).Value.Element);
}
}
if (histo.Historique.Count() > this.numberOfElementVisible)
{
this.bMoreHisto.Visibility = Visibility.Visible;
}
}
Merci de m'aider je ne sais plus quoi faire ...
A voir également:
L'objet Visual spécifié est déjà un enfant d'un autre objet