Pour une raison quelconque, je dois initialiser les éléments ListBox derrière le code, la raison est trop compliquée à dire. Le LoadFamily() est appelé pendant l'affichage de WPF UserControl.Comment créer ListBoxItem derrière le code
public void LoadFamily()
{
DataTemplate listItemTemplate = this.FindResource("ManDataTemplate") as DataTemplate;
foreach (Person man in family)
{
ListBoxItem item = new ListBoxItem();
item.DataContext = man;
item.ContentTemplate = listItemTemplate;
// other initialize for item object
this.ActivityList.Items.Add(item);
}
}
Dans mon fichier xmal, je définis un DataTemplate. Mais le ListBox ne contient que le bloc de texte vide, le nom de la personne ne s'affiche pas. Je ne sais pas pourquoi, peut-être que la liaison de données est erronée, mais comment le faire derrière le code.
Merci pour votre aide! (WPF 3.5 ou 4.0)
///////////////////////////////////// //////////////////////
Merci pour votre aide. J'ai trouvé où j'avais tort. Je ne devrais pas ajouter ListBoxItem dans ActivityList.Items, l'un est UIElement, l'autre est> DataCollection. Ils sont deux choses différentes.
je devrais modifier le code comme suit:
foreach (Person man in family)
{
this.ActivityList.Items.Add(man);
ListBoxItem item = this.ActivityList.ItemContainerGenerator.ContainerFromItem(man) as ListBoxItem;
item.ContentTemplate = listItemTemplate;
// other initialize for item object
}
Après avoir vérifié la sortie, j'ai découvert où j'avais tort. Ma question, merci. –