ListSubs, ComboBox 등의 ItemsSource 속성이 내 뷰 모델의 관찰 가능한 컬렉션에 바인딩 된 컨테이너가 있습니다. 내 VM의 일부 메서드를 통해 컬렉션에서 항목을 추가/제거하려고하면 UI에 반영되지 않습니다. UI를 실제로 새로 고치는 유일한 방법은 컬렉션에 새 값을 할당하는 것입니다 (즉, 다른 관련 데이터와 함께 수집) 전체 컬렉션을 재 바인딩하도록 강요합니다.WPF MVVM ListBox/ComboBox ItemsSource는 ViewModel에서 UI를 업데이트하지 않습니다.
어쩌면 내가 누락되었거나 컬렉션 바인딩 문제에 대해 이해할 수 없다. 누군가가 해결책을 갖고 있거나 좋은 설명이 있다면/둘 다 좋을 것이다.
private ObservableCollection<ScheduledRecordingObject> m_PreSavedRecordingScheduleList;
PreSavedRecordingScheduleList = new ObservableCollection<ScheduledRecordingObject>();
public ObservableCollection<ScheduledRecordingObject> PreSavedRecordingScheduleList
{
get
{
return m_PreSavedRecordingScheduleList;
}
set
{
m_PreSavedRecordingScheduleList = value;
OnPropertyChanged("PreSavedRecordingScheduleList");
}
}
ScheduledRecordingObject도에서 INotifyPropertyChanged 구현합니다 여기 내보기에서 샘플 (이 경우 그 목록 상자) 여기
<ListBox
Grid.Row="9"
Grid.Column="1"
Grid.ColumnSpan="3"
Width="200"
Height="200"
ItemsSource="{Binding PreSavedRecordingScheduleList,UpdateSourceTrigger=PropertyChanged}"
SelectedItem="{Binding SelectedPreSavedRecordingSchedule,UpdateSourceTrigger=PropertyChanged}"
DisplayMemberPath="Display"/>
내 뷰 모델이입니다.
public ObservableCollection<yourType> MyItemsSource {get;set}
더 나은 이해를 위해 지금까지 코드 시도를 – Sheridan
표시 - 컬렉션의 초기 값이 목록 상자에 표시됩니까? – blindmeis
예, 초기 값이 표시됩니다. 예를 들어 C'tor에 몇 가지 항목을 추가하면 사용자가 볼 수 있지만 UI 변경 후 추가/제거/삭제 등의 작업을 수행하면 어떤 변화가 생길 수 있습니까? – user1531186