我一直在结合WPF ListBox中Dispatcher使用下面的代码
Dispatcher.BeginInvoke(new Action(() =>
{
LoadData();
}));
private void LoadData()
{
// Written some logic here
}
Run Code Online (Sandbox Code Playgroud)
它绑定ListBox井,但当我打电话
ListBoxItem myListBoxItem = (ListBoxItem)(routeList.ItemContainerGenerator.ContainerFromItem(item));
Run Code Online (Sandbox Code Playgroud)
它总是让我回归.null问题只发生在我绑定ListBox内部时 Dispatcher.如果我ListBox在类构造函数中绑定相同的,它可以正常工作.
项容器在单独的调度程序操作中生成.结果,你得到了null.
我们应该始终将容器生成视为异步执行的操作.
可以监听哪个StatusChanged事件ItemContainer提供有关是否ItemConteiner创建的信息.
因此,为了确保ItemContainer生成,您应该附加到StatusChanged事件并检查ContainersGenerated状态.
例如:
yourListBox.ItemContainerGenerator.StatusChanged += new EventHandler(ItemContainerGenerator_StatusChanged);
private void ItemContainerGenerator_StatusChanged(object sender, EventArgs e)
{
if (this.ItemContainerGenerator.Status == GeneratorStatus.ContainersGenerated)
{
// Do something here...
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1304 次 |
| 最近记录: |