Bonjour,
Je stocke une liste de couleur dans un xml mais je ne peux pas convertir ces valeur String en couleur.
Par exemple je voudrais faire :
Code:monButton.BackGround = maCouleurXmlDeTypeString (avec maCouleurXmlDeTypeString = "Blue")
Une idée ?
Version imprimable
Bonjour,
Je stocke une liste de couleur dans un xml mais je ne peux pas convertir ces valeur String en couleur.
Par exemple je voudrais faire :
Code:monButton.BackGround = maCouleurXmlDeTypeString (avec maCouleurXmlDeTypeString = "Blue")
Une idée ?
Salut,
tu peux utiliser un BrushConverter :
Code:
1
2 BrushConverter conv = new BrushConverter(); SolidColorBrush brush = conv.ConvertFromString("Blue") as SolidColorBrush;
Code:ColorConverter.ConvertFromString(string value);
Merci binoo
mais maintenant j'ai une autre erreur quand j'appel ma fonction remplirLst :Citation:
Element already has a logical parent. It must be detached from the old parent before it is attached to a new one.
L'erreurCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20Private Lbi As New ListBoxItem Private Conv As New BrushConverter() Private Sub remplirLst(ByVal vGrd As Grid, ByVal vLst As ListBox, ByVal vLbl As Label, ByVal vIEMat As IEnumerable(Of XElement)) If vIEMat.@Name <> "" Then vGrd.Visibility = Visibility.Visible vLbl.Content = vIEMat.@Name vLst.Items.Clear() For Each XE As XElement In vIEMat.<Item> If vIEMat.@Name = "COULEUR" Then Lbi.Background = Conv.ConvertFromString(XE.@Bg) Lbi.Foreground = Conv.ConvertFromString(XE.@Fg) End If Lbi.Content = XE.@Value vLst.Items.Add(Lbi) Next Else : vGrd.Visibility = Visibility.Hidden End If End Sub
est levée sur la ligne :Citation:
'InvalidOperationException was unhandled by user code'
Code:vLst.Items.Add(Lbi)
L'erreur ne provient pas de la couleur mais aparemment de la variable Lbi, il ne semble pas aimer que je le déclare en variable private de classe, mais plutot en variable déclarée dans ma fonction
Je pense que tu dois créer une nouvelle instance de ton ListBoxItem à chaque fois que tu veux en ajouter un. Donc dans ton foreach :
En fait un contrôle ne peut avoir qu'un seul parent comme le message le dit.Code:
1
2
3
4
5
6
7
8
9
10 For Each XE As XElement In vIEMat.<Item> Lbi As New ListBoxItem If vIEMat.@Name = "COULEUR" Then Lbi.Background = Conv.ConvertFromString(XE.@Bg) Lbi.Foreground = Conv.ConvertFromString(XE.@Fg) End If Lbi.Content = XE.@Value vLst.Items.Add(Lbi) Next
Merci ça fonctionne très bien comme ça.