我在Pivot部分有一个dataBinding ListBox。
在另一个Pivot部分,我有一个表单来为ListBox创建新项目。
当我向ListBox添加一个新项目时,我需要访问新的ListBoxItem以查找TextBox控件并修改Text值,但是
ListBoxItem lbItem = allItemsListBox.ItemContainerGenerator.ContainerFromIndex(itemIndex) as ListBoxItem;
始终返回null。
问题似乎是ListBox不可见,因此新的ListBoxItem是虚拟的。
我该如何解决?
感谢。
答案 0 :(得分:1)
为什么不使用DataTemplates进行数据绑定而不是直接尝试修改控件?
例如:
代码:
// Data binding class
public class Data
{
// Implement INofifyPropertyChanged
public string Text { get; set; }
}
// Code to bind it to Pivot
ObservableCollection<Data> list = new ObservableCollection<Data>();
// populate list
Pivot1.ItemsSource = list;
XAML:
<Pivot Name="Pivot1">
<Pivot.ItemTemplate>
<DataTemplate>
<TextBlock Text={Binding Text}" />
</DataTemplate>
</Pivot.ItemTemplate>
</Pivot>
现在,要更改特定TextBlock的Text,您需要做的就是从列表中将相关Data对象的值更改为它。