2016-09-30 3 views
2

Ich benutze Listbox von Bildern die Erhöhung der Speicherauslastung bis Giga Bytes.Ich benutze diese XAML.WPF-Listbox mit Bildern inFreispeicher

<Grid Grid.Row="0" Grid.Column="1"> 
      <ScrollViewer> 
       <ListBox ItemsSource="{Binding Path=FilterImportSlideCollection}" ItemTemplate="{StaticResource slideItemTemplate}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" /> 
      </ScrollViewer> 
     </Grid> 

Und die Vorlage

<DataTemplate x:Key="slideItemTemplate" > 
    <Grid Width="100" Height="130" Margin="2 2 2 2" ScrollViewer.VerticalScrollBarVisibility="Auto" ScrollViewer.HorizontalScrollBarVisibility="Disabled"> 
     <Grid.RowDefinitions> 
      <RowDefinition Height="80"/> 
      <RowDefinition/> 
     </Grid.RowDefinitions> 
     <Border Background="White" BorderBrush="Black" BorderThickness="1" Grid.Row="0" Panel.ZIndex="3" Canvas.Left="0" Canvas.Right="0"> 
      <Image MinWidth="100" MinHeight="80" HorizontalAlignment="Center" Source="{Binding ImagePath, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"></Image> 
      </Border> 
     <TextBlock HorizontalAlignment="Left" Grid.Row="1" TextWrapping="Wrap" VerticalAlignment="Top" Text="{Binding Title}" Foreground="Black"/> 
    </Grid> 
</DataTemplate> 

jede ImagePath hat den Pfad der Bilder wie "https://localhost:2673/SlideThumbnail/1272.png"

+0

Zunächst ersten, setzen Sie Ihre Bilder im lokalen Ordner. – Coding4Fun

+0

Es funktioniert möglicherweise auf den ersten Versuch, aber wenn ich das Listenfeld mehrere Male nach dem Hinzufügen einiger Bilder Bilder auf dem Server öffnen, muss ich alle Bilder erneut im lokalen Verzeichnis erneut herunterladen. –

+0

Ich habe Ihren Vorschlag versucht, aber es hat nicht funktioniert. –

Antwort

1

Platzierung der ListBox innerhalb eines ScrollViewer deaktiviert UI-Virtualisierung bedeutet alle Ihre ListItems sind erstellt im Speicher auf einmal.

Versuch:

<Grid Grid.Row="0" Grid.Column="1"> 
    <ListBox ItemsSource="{Binding Path=FilterImportSlideCollection}" ItemTemplate="{StaticResource slideItemTemplate}" ScrollViewer.HorizontalScrollBarVisibility="Disabled" /> 
</Grid> 

Für weitere Informationen über die Virtualisierung einen Blick auf MSDN:

Displaying Large Data Sets