У меня есть список, привязанный к свойству. Также есть событие загрузки «ListLoaded».Событие, загруженное ListView, не срабатывает при использовании в Task Factory C#
В своем событии загрузки я устанавливаю 1-й выбранный элемент в true и меняя цвет фона этого элемента.
Некоторые операции и вызовы API выполняются в конструкторе ViewModel. Событие загрузки также устанавливается в конструкторе. Для загрузки экрана требуется некоторое время. Поэтому я добавил весь код в конструктор в Factory Task и соответствующим образом установил видимость индикатора выполнения.
Task tskOpen = Task.Factory.StartNew(() =>
{
ProgressBarVisibility = Visibility.Visible;
DataAccess data = new DataAccess();
DoctorDetailsBooking = data.GetDoctorsList(Convert.ToDateTime(BookingDate).Date);
FillSlots();
**ListLoaded = new RelayCommand<RoutedEventArgs>(ListViewLoaded);**
}).ContinueWith(t =>
{
ProgressBarVisibility = Visibility.Hidden;
}, TaskScheduler.FromCurrentSynchronizationContext());
Вопрос в том, когда я даю код внутри задачи, событие ListeViewLoaded не срабатывает. Следовательно, представление списка неправильно загружено. Если я удалю часть задачи Task, это событие будет запущено, и все будет хорошо.
Я не знаю, как нарезать резьбу и концепцию задачи хорошо. Я что-то упустил?
Возможно, элемент управления загружен до того, как команда «ListLoaded» установлена внутри задачи, поэтому я предлагаю вам переместить назначение «ListLoaded» перед задачей. – Grx70
Но ListLoaded использует некоторые свойства, которые устанавливаются в методе FilleSlots(). Поэтому, когда я переместил назначение над задачей, оно не загрузилось должным образом. Аналогично, когда я переместил назначение после задачи, сначала загружается список, а затем запускаются методы (поскольку они находятся внутри задачи). –