내가 뷰 모델에 ObservableCollection에 정의가 좋아 : 그런 다음이 목록 상자에 대한 복수 선택이 가능INotifyCollectionChanged/ObservableCollection 코드에서 CollectionChanged 이벤트를 발생시키는 방법?
<i:Interaction.Behaviors>
<My:ListBoxSelectedItemsBehavior SelectedItems="{Binding MyList, Mode=TwoWay}" />
</i:Interaction.Behaviors>
:
//private ObservableCollection<MyObject> _myList;
public ObservableCollection<MyObject> MyList {get;set;}
그런 다음 내가 좋아하는 행동 목록 상자에 대한 selectedItems를에 바인딩하려고합니다. 사용자가 마우스와 상호 작용하여 둘 이상의 항목을 선택하면 괜찮습니다.
질문 : 처음에는 데이터베이스에 저장된 항목 데이터가 선택되었습니다. 데이터베이스에서 데이터를 검색 할 때 CollectionChanged를 실행하고 해당 selectedItem을 UI에서 선택한 것으로 표시해야합니다. 심지어 데이터가로드 될 때 MyList에 대한 ViewModel에서 RaisePropertyChanged를 수행했지만 UI는 여전히 선택한 항목을 표시하지 않습니다. 응용 프로그램을 디버깅 한 후에도 MyList가로드되고 ViewModel의 Mylist에 대해 발동 된 CollectionChanged가 있지만 MyList에 바인딩되어 있지만 ListBoxSelectedItemsBehavior의 바인딩 항목 SelectedItems에 대해 발동되지 않은 CollectionChanged 이벤트가 발견되었습니다.
이 문제를 해결하는 방법? 코드에서
MyList.CollectionChanged+=new System.Collections.Specialized.NotifyCollectionChangedEventHandler(MyList_CollectionChanged);
사용
잘 알고 계시 겠지만, 의도적으로 '_myList'멤버를 무시하는 코드 스 니펫이 있습니까? 귀하의 부동산 'MyList'는 기술적으로 개인 변수를 전혀 사용하지 않습니다. – Tejs