설명 : 먼저 공용 속성 MyCollection을 통해 액세스되는 ObservableCollection을 만들었습니다. 이제 DataGrid UI를 MyCollection에 바인딩하면 컬렉션 변경 사항을 인식하지만 MyCollection 자체가 변경되지는 않습니다 (예 : UpdateCollection 메서드). 이 문제를 해결하기 위해 익숙한 'PropertyChanged ("MyCollection")'을 MyCollection 속성에 적용했습니다.UI 다시 할당되는 ObservableCollection에 대한 바인딩 업데이트
이제 Collection View 레이어가 필요한 DataGrid Content를 그룹화해야한다는 것을 알게되었습니다. CollectionView에 추가하고 바인딩 할 때 MyCollection이 다시 할당되면 UI가 더 이상 업데이트되지 않습니다. CollectionChanged만이 Source에서 View로 전달된다는 것을 읽었습니다. 필자는 내 경우에는 소스 또는 뷰에서 CollectionChanged 이벤트를 트리거해야하는 MyCollection의 PropertyChange라고 생각합니다.
질문 : 어떻게 MyCollection의보기에 바인딩 된 UI 업데이트를 실행하는 데 MyCollection에 다시 assigmend을받을 수 있나요?
참고 : MyCollection을 다시 할당하는 이유는 Modular MEF/MVVM 아키텍처 때문입니다.
public class MyViewModel
{
public MyViewModel()
{
MyCollectionViewSource = new CollectionViewSource() { Source = MyCollection};
// The DataGrid is bound to this ICollectionView
MyCollectionView = MyCollectionViewSource.View;
}
// Collection Property
// NotifyPropertyChanged added specifically to notify of MyCollection re-assignment
ObservableCollection<MyObject> _MyCollection;
public ObservableCollection<MyObject> MyCollection
{
get {return _MyCollection;}
set {if (value != _MyCollection)
{_MyCollection = value;
NotifyPropertyChanged("MyCollection");}}
}
public MyCollectionViewSource PropertiesCollectionViewSource { get; private set; }
public ICollectionView = MyCollectionView { get; private set; }
// Method updates MyCollection itself (Called via ICommand from another ViewModel)
public void UpdateCollection(ObservableCollection<MyObject> NewCollection)
{
MyCollection = NewCollection;
}
}
감사합니다,
당신은'MyCollectionViewSource.Source' 너무 재 할당 할 수 있습니까? 나는 '속성'이 변경된 것을 보지 못했다. – LPL
오타가 나는 사과드립니다. MyCollection과 같아야하는 질문을 편집했습니다. – aidesigner