У меня есть таблица данных со столбцом шаблона. Шаблон имеет изображение:
<Image HorizontalAlignment="Left" Name="ImageProduct" Stretch="None" VerticalAlignment="Center" Grid.Row="0" Grid.Column="0" Source="{Binding Path=ProductImage, Mode=OneWay}" RenderOptions.BitmapScalingMode="HighQuality"/>
Сетка прокручивается очень медленно, потому что ProductImage лениво загружает частный объект растрового изображения, когда пользователь прокручивает сетку. Я думал об использовании другого потока для загрузки приватной переменной (за свойством ProductImage). У меня проблемы с моим кодом по разным причинам ... одним исключением было то, что я могу обновлять только пользовательский интерфейс в потоке STA, а другое - источник зависимости не может быть в другом потоке, чем приемник зависимости (?)
Я не могу придумать хороший способ сделать это. Код для сетки выглядит примерно так с неудачной попыткой фонового работника:
var productVMList = GetProducts();
_window.ReceivingBatchProductsGrid.ItemsSource = productVMList;
var setProductImageWorker = new BackgroundWorker();
setProductImageWorker.DoWork += setProductImageWorker_DoWork;
setProductImageWorker.RunWorkerAsync(productVMList);
А вот и DoWork:
var products = (ObservableCollection) e.Argument;
foreach (var product in products)
{
product.SetProductImage();
}
Есть мысли?