2015-09-27 2 views
0

У меня есть 30000 изображений, теперь мне нужен элемент управления, который может показать мне изображение (как изображения не только пути к файлу) с его именем файла.Какой wpf-контроль для массового количества изображений

Нужна какая-либо подкачка, например. 30 фотографий на странице, я думал о GridView?!

У меня есть список, содержащий Hashtable (ключ: escape-путь к этому изображению, значение: имя изображения), у меня есть GridView, привязанный к этой хэш-таблице, но он показывает только путь к файлу.

C#:

wordListView.ItemsSource = Hsh;// contains a property of Hahstable; 

XAML:

 <DataGrid x:Name="wordListView" HorizontalAlignment="Left" VerticalAlignment="Top" Height="260" Width="645" Margin="10,156,0,0"> 
     <!--AutoGenerateColumns="False" ItemsSource="{Binding}">--> 
     <!--<DataGrid.Columns> 
      <DataGridTextColumn Binding="{Binding ID}" Header="ID" IsReadOnly="True" /> 
      <DataGridTextColumn Binding="{Binding Path}" Header="Path"/> 
      <DataGridTextColumn Binding="{Binding TimeStamp}" Header="TimeStamp"/> 
     </DataGrid.Columns>--> 
    </DataGrid> 
+0

Это хорошая идея для поиска VirtualizingStackPanel. – tomab

ответ

0

Performance будет ужасно, если вы пытаетесь загрузить все изображения в памяти сразу. Поэтому вы можете использовать виртуализацию, чтобы загружать только те, которые будут видны (или находятся только на экране), и загружать другие, если/когда пользователь прокручивает, чтобы сделать их видимыми.

This answer содержит пример кода. В двух словах вы должны установить ItemsPanel к VirtualizingStackPanel:

<ItemsControl 
    VirtualizingStackPanel.IsVirtualizing="True" 
    ScrollViewer.CanContentScroll="True" 
    ItemsSource="{Binding MyItems}"> 
    <ItemsControl.ItemTemplate> 
     <DataTemplate> 
      <Image Source="{Binding ImageSource}" /> 
     </DataTemplate> 
    </ItemsControl.ItemTemplate> 
    <ItemsControl.ItemsPanel> 
     <ItemsPanelTemplate> 
      <VirtualizingStackPanel /> 
     </ItemsPanelTemplate> 
    </ItemsControl.ItemsPanel> 
</ItemsControl> 

Вы можете прочитать больше о optimising performance on MSDN here.

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