【发布时间】:2011-02-18 21:14:30
【问题描述】:
我在 WPF 和 C# 中有一个列表视图,它使用 ObservableCollection 来填充数据。当某个事件被触发时,我调用一个函数将一个新行插入到集合中。然后我需要访问该行中的控件。
我遇到的问题是,在我插入行后,我尝试遍历 listview 行,该行在我的循环中显示为 null。
if (addNewNote)
{
_resultsCollection.Insert(0, new ResultsData
{
Notes = "Data to Insert",
// ... rest of fields
});
} // end if (addNewNote)
for (int currRowIndex = 0; currRowIndex < this.ResultsList.Items.Count; currRowIndex++)
{
System.Windows.Controls.ListViewItem currRow =
(System.Windows.Controls.ListViewItem)this.ResultsList.ItemContainerGenerator.ContainerFromIndex(currRowIndex);
if (currRow != null)
{
System.Windows.Controls.TextBox tb = FindByName("EditNotesTextBox", currRow) as System.Windows.Controls.TextBox;
// do stuff with controls ...
}
}
当 currRowIndex 为零时,这里的 currRow 始终为空。
这不应该是这样,因为我刚刚添加了它。是因为我试图在插入它的同一个函数中访问它,而列表视图尚未更新吗?我能够访问列表视图中的每一行。有更好的解决方案吗?谢谢!
【问题讨论】: