Silverlight中的可观察集合

时间:2013-10-01 11:59:34

标签: wpf c#-4.0 collections foreach silverlight-4.0

我的应用程序是在Silverlight中使用MVVM架构开发的,并且下面的代码试图从UI中检索所有项目(集合)及其相应的子项目,并且它没有任何问题,工作正常。

public ObservableCollection<DemoViewModel> Items { get; private set; }

foreach (var demoviewmodelitem in DemoViewModel.Items) //Items collection (Count=8)
{
     foreach (var item in demoviewmodelitem.SubItems)
     {

     }
}

现在需求已更改,并且不想在上面的代码中检索所有Items(集合)及其相应的子项,而是需要在UI中检索具有相应子项的Selected Item。对于此要求,我的团队已更改viewModel类中的代码,方法是添加一个属性selectedItem,该属性包含用户选择的项及其相应的子项。

当我在Add Watch中调试上面的代码时,我可以看到DemoViewModel.selectedItem包含用户​​在UI中的选定项目(例如Item6)和相应的子项目。

所以我从

改变了外部的foreach循环
foreach (var demoviewmodelitem in DemoViewModel.Items) //collection

foreach (var demoviewmodelitem in DemoViewModel.selectedItem)//Property

并收到以下错误。如何摆脱这个错误并想从上面的代码中只检索selecteditem和相应的子项?

错误:foreach语句无法对“类名XXXXXXXXX”类型的变量进行操作,不包含“GetEnumerator”的公共定义

先谢谢

1 个答案:

答案 0 :(得分:0)

应该删除外部循环,其余的(以前是内部)循环应该如下所示:

foreach (var item in DemoViewModel.selectedItem.SubItems)
{

}