
Ergebnis 1 bis 6 von 6
-
Mich gibt's schon länger
- 19.01.2012, 08:57
- #1
He Leute,
ich füge einer Listbox per Items.Add() Listboxitems dynamisch hinzu.
Danach möchte ich die Fontsize der Items ändern. Leider funktioniert mein Code nicht richtig:
Code:foreach (string element in li_Bezeichner) lb_bezeichener.Items.Add(element); foreach (ListBoxItem li in lb_bezeichener.Items) li.FontSize = 30;
Wo könnte der Fehler stecken?
Danke schonmal
LG THPS
-
Gehöre zum Inventar
- 19.01.2012, 15:36
- #2
Du fügst Strings ein und versuchst die dann auf ListBoxItem zu casten und das klappt halt nicht.
So sollte es gehen(jetzt nur der Idee nach, hab den Code nicht getestet):
Code:lb_bezeichner.Items.Add(new ListBoxItem() { Content = element };
Code:lb_bezeichner.Items.Add(new ListBoxItem() { Content = element, FontSize = 30 });
-
Mich gibt's schon länger
- 19.01.2012, 18:44
- #3
Vielen Dank, das hat geklappt, ich war der Meinung, das Items.Add auch so ein ListboxItem erstellt, welches man dann ansprechen kann.
Lg
-
Gehöre zum Inventar
- 19.01.2012, 19:35
- #4
Jein, intern wird das schon irgendwie umgewandelt, da er es sonst nicht darstellen kann aber für den programmatischen Zugriff ist es einfach so, dass er dir das zurückgibt was du reinsteckst.
-
- 20.01.2012, 11:41
- #5
Stevies Variante würde ich unterschreiben. Wobei ich ehrlich gesagt in so einem Fall wahrscheinlich einen DataTemplate für die Einträge der ListBox definiert hätte.
Zum Verständnis des Zusammenhangs zwischen Items der ListBox und den ListBoxItems hilft vielleicht folgendes: Die Items sind die "Daten" der ListBox. Die ListBoxItems dienen der "Präsentation" dieser Daten. Man könnte also sagen, die Items der Liste werden beim Rendern in ein ListBoxItem "eingepackt".
Wenn du später an die ListBoxItems rankommen willst, müsstest du etwa sowas verwenden:
Code:lb_bezeichner.LayoutUpdated += OnBezeichnerListLayoutUpdated; private void OnBezeichnerListLayoutUpdated(object sender, EventArgs e) { for (int i = 0; i < lb_bezeichner.Items.Count; i++) { ListBoxItem listItem = lb_bezeichner.ItemContainerGenerator.ContainerFromIndex(i) as ListBoxItem; if (listItem != null) { // mach was mit dem listItem } } }
-
Gehöre zum Inventar
- 20.01.2012, 13:44
- #6
DataTemplate wäre sicher die schönste Lösung, wollte solange da nur Text drinsteht aber noch nicht damit anfangen (in meiner Antwort).
Sobald man da tatsächlich Datenobjekte reinstecken will, die mehr Info als nur einen String haben kommt man aber um das Template ohnehin nicht mehr wirklich herum. Vor allem sind die recht schön deklarativ zu definieren und anzupassen. Unterm Strich also die Empfehlung: ließ dich da mal ein, is eines der praktischsten Silverlight Features.
Pixel 10 Serie mit Problemen:...