2012-04-09 2 views
1

설명 : 먼저 공용 속성 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; 
    } 
} 

감사합니다,

+0

당신은'MyCollectionViewSource.Source' 너무 재 할당 할 수 있습니까? 나는 '속성'이 변경된 것을 보지 못했다. – LPL

+0

오타가 나는 사과드립니다. MyCollection과 같아야하는 질문을 편집했습니다. – aidesigner

답변

관련 문제