을 사용할 때 이벤트가 실행되지 않습니다. 속성에 바인딩 된 목록이 있습니다. "ListLoaded"로드 이벤트도 있습니다.ListView loaded 이벤트 팩토리에서 C#
<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의 생성자에서 수행됩니다. 로드 이벤트도 생성자에서 설정됩니다. 화면을로드하는 데 약간의 시간이 걸립니다. 그래서 작업 팩토리에 생성자에 전체 코드를 추가하고 그에 따라 진행률 표시 줄을 설정했습니다.
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());
문제는 Task 내에 코드를 제공 할 때 ListeViewLoaded 이벤트가 실행되지 않습니다. 따라서 목록보기가 제대로로드되지 않습니다. 작업 코드 부분을 제거하면 이벤트가 시작되고 모든 것이 잘 작동합니다.
스레딩 및 작업 개념을 잘 모르겠습니다. 내가 여기서 뭔가를 놓치고 있니?
아마도 'ListLoaded' 명령이 작업 내에 설정되기 전에 컨트롤이로드 될 것입니다. 따라서 작업 전에 ListLoaded 할당을 이동하는 것이 좋습니다. – Grx70
그러나 ListLoaded는 FilleSlots() 메서드에서 설정되는 일부 속성을 사용합니다. 그래서 과제 위에 과제를 옮겼을 때, 과제가 제대로로드되지 않았습니다. 마찬가지로 작업 후 할당을 이동하면 목록이 먼저로드 된 다음 메서드가 실행됩니다 (태스크 내부에 있음). –