WPF ItemsControl - Como saber quando os itens terminaram de carregar, para que eu possa focar o primeiro?

StackOverflow https://stackoverflow.com/questions/2492214

Pergunta

Eu tenho um itemsControl na minha opinião, que está vinculado a uma observaLeCollection da ViewModel. A coleção é preenchida e, depois, um evento da VM para exibir é levantado (pense em resultados de pesquisa e evento de pesquisa).

Eu gostaria de mover o foco do teclado para o primeiro item em um itemsControl, mas quando faço isso no código da exibição ao lidar com o Searchfinished, os itens ainda não foram renderizados (a coleção já está preenchida, mas a renderização do WPF é assíncrona e não foi já aconteceu), então não há nada a focar (foco () precisa ter a árvore visual dos itens já construída).

Eu queria fazer (myiTemsControl.itemcontAinergerator.containerFromIndex (0) como uielement) .focus ();, mas como o 0º item ainda não está carregado, o contêinerFromIndex (0) retorna nulo.

Tentei atrasá -lo com o Dispatcher.BegininVoke ... com baixa prioridade, mas isso depende do tempo exato e geralmente não funciona.

Como posso esperar até que o primeiro item no itemsControl seja carregado?

Foi útil?

Solução

Você pode usar o ItemContainerGenerator.StatusChanged evento, e então verifique seu Status propriedade. Se o Status == GeneratorStatus.ContainersGenerated, então você pode obter o primeiro contêiner com segurança.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top