2010-08-30 2 views
1

У меня есть ListBox, содержащий большое количество элементов управления изображением. Источник каждого изображения установлен на URI на удаленном сервере. Одновременно отображается около 20 изображений (панель - VirtualizingStackPanel), и каждый раз, когда прокручивается ListBox, требуется несколько секунд для рендеринга изображений, что приводит к чрезвычайно медленной прокрутке. Изображения небольшие (по 5-7K каждый), и изменение размера не требуется.Выполнение рендеринга изображений WPF

Когда источником является локальный URI, производительность прекрасна. Изображения подаются сервером nginx и отображаются практически мгновенно в браузере.

Мой вопрос:

  1. Есть ли лучший способ показать эти изображения в WPF?
  2. Если это лучший способ, как мне начать отслеживать узкое место?

РЕДАКТИРОВАТЬ:

в окне списка заполняется путем связывания с коллекцией. Это XAML в DataTemplate установлен как ItemTemplate в ListBox в:

<ListBoxItem> 
    <StackPanel> 
     <TextBlock Text="{Binding Path=Title}" /> 
     <Image Width="50" Margin="0"> 
      <Image.Source> 
       <BitmapImage UriSource="{Binding Path=ImageUri}" DecodePixelWidth="50" /> 
      </Image.Source> 
     </Image>        
    </StackPanel> 
</ListBoxItem> 
+0

Больше информации необходимо ... как вы заполняете свой ListBox? Явным образом добавляя ListBoxItems или используя привязки? Пожалуйста, разместите XAML в списке –

ответ

0

Попробуйте связывании изображения с ObservableCollection, который будет возвращать коллекцию ImageSource в образ внутри ItemTemplate.

HTH

Смежные вопросы