Так как почти все готово, но есть проблемы даже при тестах с ItemsControl.
Существует следующий, почти кастомный контрол (будет сделан перенос после окончания):
<ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Auto">
<ItemsControl ItemsSource="{Binding ListPreviewInfo}" HorizontalContentAlignment="Center">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel ItemWidth="180" Orientation="Horizontal"
IsItemsHost="True" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Background="White"
BorderBrush="LightSlateGray"
CornerRadius="3"
Margin="2.5"
BorderThickness="1">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions>
<Image Grid.RowSpan="3" Grid.Row="0" VerticalAlignment="Center"
Source="{Binding PeviewImage}" />
<Border ToolTip="{Binding PreviewTitle}" Grid.Row="0" x:Name="AnimTitle" Background="WhiteSmoke" VerticalAlignment="Top"
Padding="2.5" HorizontalAlignment="Stretch" CornerRadius="3,3,0,0">
<TextBlock TextWrapping="NoWrap"
Margin="2.5"
TextTrimming="CharacterEllipsis" Text="{Binding PreviewTitle}" />
</Border>
<Border Grid.Row="2" Background="WhiteSmoke" VerticalAlignment="Bottom" Padding="2.5"
HorizontalAlignment="Stretch" CornerRadius="0,0,3,3"
Height="{Binding ElementName=AnimTitle, Path=ActualHeight}">
<TextBlock ToolTip="{Binding PreviewAltName}" TextWrapping="NoWrap"
Margin="2.5"
TextTrimming="CharacterEllipsis" Text="{Binding PreviewAltName}" />
</Border>
</Grid>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.Style>
<Style TargetType="{x:Type ItemsControl}">
<Style.Triggers>
<Trigger Property="ItemsSource" Value="{x:Null}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate>
<Grid>
<TextBlock VerticalAlignment="Center" HorizontalAlignment="Center"
FontSize="16" Foreground="LightSeaGreen"
Text="{x:Static langs:lang.ApplicationLoadAnimeList}" />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Trigger>
</Style.Triggers>
</Style>
</ItemsControl.Style>
</ItemsControl>
</ScrollViewer>
В него, должно поместиться 2610 и более элементов.
Суть проблемы:
При полной загрузке всех данных, мало того что отъедается 2.5 ГБ ОЗУ так еще и все элементы которые прогрузились, но не видны остаются в памяти.
Как данную проблему можно решить? Возможна идея с переписыванием класса WrapPanel.
WrapPanelиспользоватьVirtualizingStackPanel? – Андрей NOP Dec 27 '17 at 18:31WrapPanel? – Dec 27 '17 at 18:36