2012-04-09 83 views
1

描述: 首先我創建了一個ObservableCollection,通過公共屬性MyCollection訪問。現在,如果我將DataGrid UI綁定到MyCollection,它將識別集合更改,但如果MyCollection本身更改(即UpdateCollection方法),則不會。爲了解決這個問題,我將熟悉的'PropertyChanged(「MyCollection」)'應用於MyCollection屬性。UI綁定更新到一個ObservableCollection被重新賦值

現在我發現需要將需要集合視圖圖層的DataGrid內容分組。當我添加並綁定到CollectionView時,當MyCollection被重新分配時,UI不再更新。我讀到只有CollectionChanged從Source傳播到View。我猜在我的情況下,它是MyCollection上的PropertyChange,需要以某種方式觸發Source或View上的CollectionChanged事件。

問題: 我怎樣才能在MyCollection的重新assigmend觸發UI更新,這勢必MyCollection的視野看?

注意:重新分配MyCollection的原因是由於模塊化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 2012-04-09 23:44:41

+0

我的歉意是一個錯字。我編輯了這個問題,Source屬性應該等於MyCollection。 – aidesigner 2012-04-10 01:48:40

回答

相關問題