如何在INotifyCollectionChanged / ObservableCollection的代码中触发CollectionChanged事件?

时间:2012-04-30 17:37:51

标签: c#-4.0 silverlight-4.0

我在ViewModel中定义了一个ObservableCollection,如:

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

然后我尝试将其绑定到ListBox的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事件没有为Lis​​tBoxSelectedItemsBehavior中的绑定项SelectedItems触发,尽管它绑定到MyList。

如何解决此问题?

1 个答案:

答案 0 :(得分:0)

尝试使用

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

从代码背后希望它能解决你的问题。