Я разрабатываю приложение WPF, и мне нужно показать 7200 изображений в окне. Каждый размер изображения равен 300x300. Мой код «* .xaml» предъявляется ниже:Показывает много изображений в представлении WPF слишком много памяти.
<ScrollViewer VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Auto">
<ItemsControl ItemsSource="{Binding Results}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Vertical"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Grid HorizontalAlignment="Center" VerticalAlignment="Center" Height="180">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="40" />
<ColumnDefinition Width="180" />
<ColumnDefinition Width="180" />
<ColumnDefinition Width="180" />
<ColumnDefinition Width="180" />
<ColumnDefinition Width="180" />
</Grid.ColumnDefinitions>
<Grid Grid.Column="0" Margin="2">
<Label Content="{Binding Frame}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
<Grid Grid.Column="1" Margin="2">
<Grid.Background>
<ImageBrush ImageSource="{Binding FrameImage}"/>
</Grid.Background>
<Image Source="{Binding FrameImage}"/>
</Grid>
<Grid Grid.Column="2" Margin="2">
<Grid.Background>
<ImageBrush ImageSource="{Binding FrameMatch}"/>
</Grid.Background>
<Image Source="{Binding FrameMatch}"/>
</Grid>
<Grid Grid.Column="3" Margin="2">
<Grid.Background>
<ImageBrush ImageSource="{Binding ObjMatch}"/>
</Grid.Background>
<Image Source="{Binding ObjMatch}"/>
</Grid>
<Grid Grid.Column="4" Margin="2">
<Image Source="{Binding ObjImage}"/>
</Grid>
<Grid Grid.Column="5" Margin="2">
<Label Content="{Binding Fitness}" HorizontalAlignment="Center" VerticalAlignment="Center"/>
</Grid>
</Grid>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</ScrollViewer>
Проблема заключается в том, что программа потребляет на много памяти. Можно решить эту проблему? Может ли кто-нибудь дать мне решение?
Попробуйте «виртуализировать» ваш пользовательский интерфейс http://msdn.microsoft.com/en-us/library/system.windows.controls.virtualizingstackpanel%28VS.95%29.aspx – jure
Какая часть вашего заявления - это «это проблема "? Я не верю, что «много памяти» является правильным утверждением, вероятно, должно быть «Мне не нравится, сколько памяти он потребляет, даже если я знаю все, что нужно, из-за моего требования загружать не менее 7200 * 360 Кбайт байтов (~ 2,5 ГБ) одновременно ». –
@AlexeiLevenkov Теперь я читаю о виртуализации пользовательского интерфейса, и я нашел ответ, благодаря Риду Копси, до того, как он нашел способ освободить ресурсы изображений, когда это было возможно. –