Hallo,
ich habe das folgende Problem und hoffe, dass mir jemand weiterhelfen kann:
ich habe im XAML dieses DataTemplate erstellt, um die Elemente einer Listbox damit anzupassen:
XML-Daten
1: 2: 3: 4: 5: 6: 7:
| <DataTemplate x:Key="cbPropertyDock"> <DockPanel x:Name="db" Height="17"> <Label x:Name="lb" ></Label> <ComboBox x:Name="cb" > </ComboBox> </DockPanel> </DataTemplate> |
in der CodeBihind-Datei wähle ich nun dieses Template aus und weise es zu:
C#-Quelltext
1:
| PropertyListBox.ItemTemplate = (DataTemplate)FindResource("cbPropertyDock"); |
...bei jedem neu erzeugten ListBoxItem wird also dieses Template verwendet. Bis hierhin funktioniert das auch sehr gut.
Mein Problem ist jetzt, dass ich nicht ohne weiteres wieder auf die Elemente zugreifen kann, die durch das Template erzeugt wurden. Ich möchte aber beispielsweise dem Label einen neuen Content oder der Combobox einen DataContext zuweisen können.
Durch das Auslesen der Kindelemente über den VisualTreeHelper kann man zwar umständlich auf die Unterelemente zugreifen, aber das funktioniert scheinbar auch nur dann, wenn die die ListBoxItems in der ListBox schon fertig gerendert zur Verfügung stehen.
Es wäre also schön, wenn mir jemand eine Bessere Lösung für den Zugriff auf die Template-Elemente nennen könnte, bzw. eine Möglichkeit, wie ich das Rendern der Elemente in der ListBox per Hand anschubsen kann und so sicher gehen kann, dass sie auch für den VisualTreeHelper verfügbar sind.
Viel Dank
Moderiert von Christian S.: XML-Tags hinzugefügt
Moderiert von Christian S.: C#-Tags hinzugefügt