Привязка ListView - PullRequest
       6

Привязка ListView

0 голосов
/ 14 июля 2009

код xaml

    <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"], отображение данных занимает слишком много времени.

что-то не так в моем коде ??

Ответы [ 3 ]

1 голос
/ 14 июля 2009

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

0 голосов
/ 14 июля 2009

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

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

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

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

0 голосов
/ 14 июля 2009

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

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

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

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

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

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