Код: Выделить всё
Виртуальный список выглядит следующим образом:
Код: Выделить всё
Я пробовал тестировать скорость инициализации виртуальной машины и просмотра, и они оба были очень медленными.
Этот список содержит всего 30 записей.
После удаления TextBlock из элементов виртуального списка задержка значительно уменьшилась, но некоторая задержка все равно оставалась.
/>Мне хотелось бы знать, как решить эту проблему, чтобы виртуальный список плавно загружался при первой загрузке.
Ниже приведен дополнительный код.

Это моя страница:
Код: Выделить всё
Код: Выделить всё
public class QueuePageViewModel : ViewModelBase
{
private readonly IPlayerService _playerService;
private readonly ObservableAsPropertyHelper _audioFiles;
public ObservableCollection AudioFiles => _audioFiles.Value;
public QueuePageViewModel(IPlayerService playerService)
{
_playerService = playerService;
_playerService.GetAllAudioFiles()
.Select(list => new ObservableCollection(list))
.ToProperty(this, x => x.AudioFiles, out _audioFiles);
}
}
Код: Выделить всё
public class PlayerService : IPlayerService, IDisposable
{
// ...
private readonly AudioQueue _audioQueue;
public AudioFile? GetCurrentAudioFile()
{
return _audioQueue.CurrentAudioFile;
}
Код: Выделить всё
public class AudioQueue
{
public AudioQueue()
{
CurrentIndex = 0;
_audioFiles = new SourceList();
_audioFiles.AddRange([
new AudioFile(
@"some path to mp3"), // just for test
// ...
]);
}
public SourceList _audioFiles;
public IObservable AudioFilesObservable =>
_audioFiles.Connect().ToCollection();
public IReadOnlyList AudioFiles => _audioFiles.Items.ToList();
Код: Выделить всё
public override void OnFrameworkInitializationCompleted()
{
var services = new ServiceCollection();
// ...
services.AddTransient();
// ...
services.AddSingleton();
Services = services.BuildServiceProvider();
// ...
base.OnFrameworkInitializationCompleted();
}
Подробнее здесь: https://stackoverflow.com/questions/798 ... ge-loading
Мобильная версия