我有一个绑定到属性的列表。还有一个加载事件“ListLoaded”。
<ListView ScrollViewer.HorizontalScrollBarVisibility="Hidden" ScrollViewer.VerticalScrollBarVisibility="Hidden" BorderThickness="0" HorizontalAlignment="Left" ItemsSource="{Binding DoctorDetailsBooking,Mode=TwoWay}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Loaded">
<cmd:EventToCommand Command="{Binding ListLoaded}" PassEventArgsToCommand="True" />
</i:EventTrigger>
</i:Interaction.Triggers>
在其加载事件中,我将第一个选定项目设置为 true 并更改该项目的背景颜色。
一些操作和 API 调用是在 ViewModel 的构造函数中进行的。load 事件也在构造函数中设置。加载屏幕需要一些时间。所以我在任务工厂的构造函数中添加了整个代码,并相应地设置了进度条的可见性。
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 事件不会触发。因此,列表视图未正确加载。如果我删除代码的任务部分,则触发事件并且一切正常。
我不太了解线程和任务概念。我在这里错过了什么吗?