- J'ai la fenêtre qui a un ListBox
- ListBox (MyListBox) a un DataTable pour son DataContext ItemSource de
- ListBox est: {Reliure}
- Listbox a un UserControl (MyUserControl) comme DataTemplate
- UserControl a RadioButtons et TextBoxes (Au début, ils sont remplis de valeurs de DataTable et l'utilisateur peut les modifier)
- fenêtre a un bouton Envoyer
Ce que je veux faire est, lorsque l'utilisateur clique sur le bouton SoumettreWPF Accès aux éléments à l'intérieur Listbox qui a un UserControl comme ItemTemplate
- Pour chaque ListBox article, obtenir les valeurs forment les zones de texte et de RadioButtons UserControl.
J'utilisait cette méthode pour ce travail:
foreach(var element in MyListBox.Items)
{
var border = MyListBox.ItemContainerGenerator.ContainerFromItem(element)as FrameworkElement;
MyUserControl currentControl = VisualTreeHelper.GetChild(VisualTreeHelper.GetChild(VisualTreeHelper.GetChild(myBorder,0) as Border,0)as ContentPresenter,0)as MyUserControl;
//And use currentControl
}
Je réalise rien lors de l'utilisation 3-5 articles dans Listbox. Mais quand j'ai utilisé beaucoup plus d'objets, j'ai vu que "var border" devenait "nul" après que certains éléments aient été bouclés dans la fonction foreach.
Je trouve la raison ici: ListView.ItemContainerGenerator.ContainerFromItem(item) return null after 20 items
Que puis-je faire maintenant? Je veux accéder à tous les éléments et obtenir leurs valeurs assis sur les contrôles de l'utilisateur.
Merci
Merci pour la solution;) – Turker