0

我有一个 silvelight 绑定的列表框,它带有一个 Observable 集合,它从数据库中填充,如下所示:

    var item = new AllCommentsPerMaterialCategoryItem { CommenterName = name,
    Text = project.Text, ID = project.ID, NoLike = (int)project.NoLike, SID = l, PID = i,
    VID = (int)project.MID, Date = project.date.ToString() };
    =_viewModel.AllCommentsPerMaterialCategoryItem.Add(item);=  }


    ObservableCollection<AllCommentsPerMaterialCategoryItem> GenreList =   
    _viewModel.AllCommentsPerMaterialCategoryItem; //result from a call to a WCF 
     service which returns the observable collection 
        GenreList1 = _viewModel.AllCommentsPerMaterialCategoryItem;
      mainMenuList.ItemsSource = GenreList;

我希望每当有人在数据库中添加新项目以在列表框中自动填充(更新刷新)以及每当我添加要添加到列表中的新项目时

我读到 Observable 集合将在内部实现“INoifyProbertyChange”,但它不起作用,我也不确定这是否会满足这些要求,我想它只会是第二个。

请问有什么想法吗?

4

1 回答 1

0

ObservableCollection确实在内部实现INotifyPropertyChanged. 但是,它不会为您进入数据库。您需要在计时器上从数据库刷新或设置双工服务来通知您,然后ObservableCollection根据需要添加/删除项目。

最好的用法是创建一个属性,返回一个实例ObservableCollection并绑定到它,然后在事情发生变化时简单地修改集合。如果要换出整个集合,则需要确保属性本身通知属性已更改,因为ObservableCollection通知 UI 其集合已更改和通知存储它的变量之间存在重要区别更改为不同的集合。后者不会自动发生。

于 2012-06-20T21:16:33.893 回答