Pergunta

Existem em geral, quaisquer problemas de desempenho conhecidos em WPF relacionados com o redimensionamento das colunas da grade?

Eu tenho uma aplicação onde eu preciso fazer algumas coisas particulares em uma coluna, mas para todas as diferentes soluções que eu encontrar o redimensionamento da coluna fica lento. Isto aplica-se quando tenho tipicamente mais de 1000 elementos em minha lista, mas eu suponho que isso não é demasiado para WPF ..? Assim; a questão geral é se você já experimentou redimensionamento coluna lento, e se você encontrou soluções para isso? O que estava causando isso?

Alguns mais detalhes sobre o meu caso em particular:

Eu posso ter duas coisas diferentes em minhas colunas; ComboBox ou TextBlock. O ComboBox deve preencher toda a coluna e siga em redimensionar coluna e clicando em uma área vazia de uma coluna com um TextBlock deve selecionar a linha. Este é onde está o problema. Para todas as soluções que tenho a isso o redimensionamento da coluna fica lento. A única maneira de fazer o redimensionamento suave que eu encontrei é pela adição de um StackPanel fora deles com Orientation = "horizontal", mas com isso eu sou incapaz de alcançar os estilos descrito acima.

Aqui estão algumas observações:

  • Adicionando estilo HorizontalContentAlignment = "Stretch" para os itens da lista faz com que os ComboBoxes esticar e as TextBlocks clicável, mas também de redimensionamento coluna lento.
  • Adicionando Background = "Transparente", quer ao StackPanel ou os elementos que são inseridos dentro deles resolve o problema também, mas faz o redimensionamento lento.
  • Adicionar um StackPanel exterior com a propriedade Orientation = "horizontal" faz o redimensionamento suave, mas eu sou incapaz de aplicar os estilos como descrito.
Foi útil?

Solução

Você já tentou virtualizar os elementos no ListView? Quando você está virtualizando, o painel de virtualização só cria os recursos visuais para os elementos que estão na vista. Isso permite que você tenha um grande número de itens sem problemas de desempenho, como você menciona. Consulte VirtualizingStackPanel para mais detalhes. Também O layout do sistema. Você pode criar seus próprios painéis virtualizar. Se você olhar para cima "Virtualizing + WPF" no Google que você vai encontrar um monte de hits para virtualização de telas, WrapPanels, e etc.

Espero que isso ajude.

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