2009-07-14 1 views
0

код XAMLListView Связывание

<ListView Name="lvw" VirtualizingStackPanel.IsVirtualizing="True" ItemsSource="{Binding Source={StaticResource MyList}}" > 
     <ListView.View> 
      <GridView AllowsColumnReorder="true" VirtualizingStackPanel.IsVirtualizing="True" > 
       <GridViewColumn x:Name="MiaCode" DisplayMemberBinding="{Binding Path=MIACODE}" Header="code" Width="80" /> 
       <GridViewColumn x:Name="MiaName" DisplayMemberBinding="{Binding Path=MIANAME}" Header="name" Width="270"/> 
      </GridView> 
     </ListView.View> 
    </ListView> 



//Binding Data count is over 10000 

даже если я установить свойство [VirtualizingStackPanel.IsVirtualizing="True"], она занимает слишком много времени, чтобы отобразить данные.

есть ли что-то не так в моем коде ??

ответ

1

Является ли MyList статическими данными? вы можете использовать асинхронную привязку, установив свойство IsAsync Binding.IsAsync Property или асинхронную загрузку данных, см. ObjectDataProvider.IsAsynchronous Property, или разработайте механизм подкачки
VirtualizingStackPanel.IsVirtualizing = "true" не ускоряет время загрузки данных, он просто не создает элементы интерфейса, которые не видны
Надеюсь, что это поможет

0

Подтверждение правильности ответа arsenmkrt.

Источник виртуализированных источников, как правило, довольно быстрый, пока он не ждет загрузки базовых данных.

Если вы не получите никакой радости, вот еще некоторые соображения:

  • Попробуйте предварительно загрузки/кэширования данных, если это возможно.
  • Двойная проверка того, что свойство getters для MIACODE и MIANAME не выполняет работу с ЦП и не создает никаких побочных эффектов.
  • Используйте Linq для отображения связанных данных.

Из опыта, тем не менее, я могу подтвердить, что GridView в виртуализированном виде списка способен отображать тысячи элементов без серьезных паттерна производительности. Надеюсь, это вам поможет.

0

Ой ... только заметил, что вы связываете к статическому ресурсу ....

Если вы создаете явный CollectionViewSource ресурс для группировки и сортировки ваших вещей, позаботьтесь отметить, что в каждом конкретном Механизм сортировки свойств CollectionView, как известно, медленный.

Если этот сценарий описывает то, что вы делаете, попробуйте использовать фильтр сортировки клиентов с представлением коллекции (что значительно быстрее) или лучше, но ваши данные предварительно отсортированы так, как они должны быть.

В широком смысле вы можете полагаться только на сортировку коллекции CollectionView до нескольких тысяч элементов до того, как время сортировки показывает, что она хуже.