Wpf ItemContainerGenerator.ContainerFromItem返回null

Raj*_*mar 1 c# wpf listbox

我一直在结合WPF ListBoxDispatcher使用下面的代码

 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在类构造函数中绑定相同的,它可以正常工作.

Ste*_*pUp 5

项容器在单独的调度程序操作中生成.结果,你得到了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)

您可以在此处找到更多信息.