2012-04-30 70 views
0

我在視圖模型定義了一個ObservableCollection喜歡:如何在INotifyCollectionChanged/ObservableCollection的代碼中觸發CollectionChanged事件?

//private ObservableCollection<MyObject> _myList; 
public ObservableCollection<MyObject> MyList {get;set;} 

然後我試圖把它與類似行爲綁定到SelectedItems的列表框:

<i:Interaction.Behaviors> 
    <My:ListBoxSelectedItemsBehavior SelectedItems="{Binding MyList, Mode=TwoWay}" /> 
</i:Interaction.Behaviors> 

然後啓用此列表框多重選擇。通過用戶與鼠標的交互來選擇多個項目時很好。

問題:最初,選擇的項目數據存儲在數據庫中,當從數據庫中檢索數據時,我需要觸發CollectionChanged並讓這些selectedItem在UI中顯示爲選中狀態。即使我在ViewModel中爲數據加載時爲MyList創建了RaisePropertyChanged,UI仍然不會將這些項目顯示爲選中狀態。在調試應用程序後,我發現即使加載了MyList,CollectionChanged也會在ViewModel中爲Mylist觸發,但CollectionChanged事件不會針對ListBoxSelectedItemsBehavior中的綁定項SelectedItems觸發,儘管它綁定到MyList。

如何解決此問題?

+0

只要你知道,是你的代碼片斷故意忽略'_myList'成員?你的財產'MyList'技術上根本不使用私有變量。 – Tejs

回答

0

嘗試使用

MyList.CollectionChanged+=new System.Collections.Specialized.NotifyCollectionChangedEventHandler(MyList_CollectionChanged); 

從後面的代碼希望它解決您的問題。

相關問題