¿Qué causaría una vista de lista de virtualización en algún momento generar todos los artículos?

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

Pregunta

editado para claridad:

Tengo 2 ListView I mi solicitud. El primero contiene una lista >. La pantalla de los elementos de la lista está plantificada para mostrar solo la clave (cadena). Cuando el usuario selecciona un elemento en estas listas (SelectionChanged), cambia la fuente de elementos de mi segunda vista de lista al valor de la tecla.

Esto se coloca dentro de una cuadrícula con un ancho de la columna de Auto.

<ListView ItemsSource="{Binding Path=FunctionIndex.Index}"
          Name="completeFunctionIndexView"        
          Style="{StaticResource SearchListStyle}"
          SelectionChanged="functionIndexView_SelectionChanged" />

<ListView Name="SearchResults" 
          VirtualizingStackPanel.IsVirtualizing="True"
          VirtualizingStackPanel.VirtualizationMode="Recycling">
              <ListView.View>
                 <GridView >
                    <GridViewColumn 
                                 CellTemplate="{StaticResource ElementLV}"
                                 Width="Auto"/>
                 </GridView>
              </ListView.View>
           </ListView>

El estilo de búsqueda de estilo solo constrae un bloque de texto que muestra la llave (ya que contiene las teclas de acceso). El elementlv es un pequeño bloque de texto con carreras unidas a diversas propiedades y valores de tostración de mis elementos.

private void functionIndexView_SelectionChanged(object sender, SelectionChangedEventArgs e)
     {
     //This supposes we want to support a "multiple selection search"
     //for now this isn't implemented
     List<Element> Results = new List<Element>();

     foreach (KeyValuePair<String, List<Element>> item in e.AddedItems)
        {
        Results = item.Value;
        break;
        }

     SearchResults.ItemsSource = Results;
     }

Esta lista que se puede mostrar en la lista LISTVIEWSULT puede tener un gran número de elementos (100k +). He puesto la isvirtualización en la segunda lista de listas, y la mayoría de las veces funciona como encanto.

Pero a veces, no puedo poner mi dedo en lo que lo causa (¡un clic demasiado rápido para seleccionar un elemento tal vez?) La aplicación decide que debe generar todos los elementos de la lista (que no se desea, obviamente). ..

¿Puede alguien apuntarme en la dirección correcta? ¿Hay alguna razón por la que los resultados de búsqueda decidirían pedir generar todos los artículos?

¿Podría estar vinculado al ancho de los artículos y la lista de listados de búsqueda, al medir, tratando de medir todos sus artículos?

¿Fue útil?

Solución

I have found the situation which caused my List to generate all elements. It has to do with the ListView to have no specified Width, and beeing in a Container with Auto (a grid column with Auto ) as Width. It seems in certain condition which I'm not sure yet, the ListView tries to generate all the elements to measure their Width instead of using only those currently visible.

I'm think it didn't always do that, but in this particular situation in my application, now it does...

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top