Pergunta

Basicamente o que eu quero fazer é permitir que um usuário digitar um valor de cadeia e ter a rolagem caixa de lista para o item que corresponde ao texto que tenha digitado (ou o primeiro jogo como).

Se eu usar o método .ScrollIntoView (), o problema é que ele coloca o item no da parte inferior da área visível se o item está mais abaixo na lista do que a posição de rolagem atual, e é no topo se é mais elevada na lista do que a posição de rolagem atual. Eu quero torná-lo coerente, tornando-o o primeiro item na lista (a menos, claro, que não pode ser devido a ser um dos últimos "página" de itens).

Eu tentei fingir selecionando o item que é x ainda mais para baixo na lista, onde x é o número de itens visíveis. Isso funciona quando vai para baixo, mas quebra quando voltar para cima. e eu fui incapaz de determinar qual o índice é atualmente a única no local visível topo na minha lista.

WinForms caixas de listagem têm a propriedade .TopIndex que des exatamente o que estou procurando, mas eu fui incapaz de encontrar o equivalente WPF. Qualquer um lá fora, têm uma idéia de como conseguir isso?

Agradecemos antecipadamente!

Foi útil?

Solução

Use ScrollIntoView duas vezes, primeiro para mostrar o último item na lista, em seguida, para mostrar o produto selecionado. Desta forma, ele vai sempre estar trabalhando a partir do-se inferior. Você precisará chamar UpdateLayout após cada chamada para garantir que as posições estão corretas.

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