使用foreach访问WPF DataBound ListBox中的TextBox

时间:2010-09-28 23:15:41

标签: wpf data-binding

我有一个带有自定义itemtemplate的数据绑定WPF ListBox - > DataTemplate中。该模板的一部分也是ListBox。 在某些事件中,我想循环遍历ListBox中的所有文本框并检索它们的值。 这可能吗?

1 个答案:

答案 0 :(得分:1)

您应该可以使用ItemContainerGenerator并在模板中查找元素来执行此操作:

foreach (var item in lb.Items)
{
    var itemContainer = lb.ItemContainerGenerator.ContainerFromItem(item) as ListBoxItem;
    // Name the TextBox in the template to find it here.
    var textBox = itemContainer.ContentTemplate.FindName("?????", itemContainer) as TextBox; 
    var value = textBox.Text;
}

如果您引用的TextBox在模板中的ListBox中,则必须通过重复相同的方法深入挖掘。