【发布时间】:2010-08-18 09:32:12
【问题描述】:
由于某种原因,我必须在后面的代码中初始化 ListBox 项,原因太复杂了。
在 WPF UserControl 出现期间调用 LoadFamily()。
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);
}
}
在我的 xmal 文件中,我定义了一个 DataTemplate。
<DataTemplate x:Key="ManDataTemplate" DataType="{x:Type local:Person}">
<TextBlock Text="{Binding Path=Name}"/>
</DataTemplate>
但 ListBox 只包含空文本块,人名不显示。不知道为什么,可能是数据绑定错了,后面的代码怎么弄。
感谢您的帮助! (WPF 3.5 或 4.0)
//////////////////////////////////// ///////////////
感谢您的所有帮助。我发现我错了。 我不应该将ListBoxItem添加到ActivityList.Items中,一个是UIElement,另一个是>DataCollection。它们是两个不同的东西。
我应该修改代码如下:
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
}
【问题讨论】: