Pergunta

eu tenho um ListBox isso pode ter muitas fileiras de registros de banco de dados modelos, incluindo um Image, ligado a um ObservableCollection<MyItem>. Às vezes, a coleção pode conter milhares de itens.

O desempenho é ótimo, mas a rolagem é o comportamento macio padrão. Eu gostaria que tivesse rolagem suave, então desmarquei ScrollViewer.CanContentScroll.

Agora eu tenho rolagem suave, mas o desempenho é horrendo: os dados são recuperados em um fio separado e o thread termina rapidamente, mas leva de 10 a 20 segundos para que os resultados sejam exibidos no ListBox. Presumo que isso ocorre porque desmarcha ScrollViewer.CanContentScroll muda o subjacente VirtualizingStackPanel para um regular StackPanel E assim está carregando a coleção inteira antes de exibir os resultados.

Então, minha pergunta é a seguinte: como faço para manter o rolamento suave sem sacrificar o VirtualizingStackPanel comportamento e desempenho?

Foi útil?

Solução

Quando você desmarcam o cancOntentscroll, você perder a virtualização. E a resposta é realmente frustrante: por enquanto, não há solução pronta para uso :(.

PS: Este não é o primeiro post aqui, perguntando esta mesma pergunta.

Outras dicas

Se você usar .NET 4.5 (ou 4.0 se você estiver disposto a invadir um pouco), então há uma resposta por aqui.

Observe que o comentário de @Guilluame estava aqui muito antes dessa resposta, mas não foi particularmente visível ao desviar as respostas.

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