Попробуйте это
private void listBox_Resources_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
{
EventHandler eventHandler = null;
eventHandler = new EventHandler(delegate
{
if (listBox_Resources.ItemContainerGenerator.Status == GeneratorStatus.ContainersGenerated)
{
listBox_Resources.SelectedIndex = 0;
listBox_Resources.ItemContainerGenerator.StatusChanged -= eventHandler;
}
});
listBox_Resources.ItemContainerGenerator.StatusChanged += eventHandler;
}
Если вы поставили точку останова в последней строке
listBox_Resources.ItemContainerGenerator.StatusChanged += eventHandler;
и посмотрите значение listBox_Resources.ItemContainerGenerator.Status в отладчике, которое он должен будет прочитать "ContainersGenerated».Если затем вы добавите точку останова в делегат EventHanler по адресу
if (listBox_Resources.ItemContainerGenerator.Status == GeneratorStatus.ContainersGenerated)
, вы должны увидеть, что «c_listBox.ItemContainerGenerator.Status = GeneratingContainers» в первый раз, а затем, когда он достигнет снова, это должен быть ContainersGenerated, а затем мы можемустановить SelectedIndex.Во всяком случае, это работает для меня.