Silverlight DataServices将项目动态添加到集合中

时间:2013-09-04 18:39:58

标签: c# wcf silverlight xceed-datagrid

我有一个使用WCF DataService的Datagrid。 以下是我正在使用的代码;

public partial class MainPage : UserControl
{
    static ServiceReference1.SampleDbEntities entities = new ServiceReference1.SampleDbEntities(new Uri("http://localhost:1324/WcfDataService1.svc/"));
    static DataServiceQuery<ServiceReference1.Book> query = entities.Books.IncludeTotalCount();
    static WcfDataServicesDataSourceProvider<ServiceReference1.Book> context = new WcfDataServicesDataSourceProvider<ServiceReference1.Book>(query, entities);

    public MainPage()
    {
        Xceed.Silverlight.DataGrid.Licenser.LicenseKey = "****-A7K1K-****-BBUA";
        this.DataContext = context;
        InitializeComponent();
    }
}

现在我需要将新添加的项目添加到网格中而不刷新它。我已经看到我可以使用“context.NotifyItemsAdded”。

如何获取新添加的项目并将其插入网格? 我可以通过当前加载的项目进行枚举吗?

1 个答案:

答案 0 :(得分:1)

最好使用 ObservableCollection 并将其设置为DataContext,新添加的项目将自动插入到网格中。

我不知道ObservableCollection的任何图形教程。 ObservableCollection 类是一个集合类型(如List),这意味着它包含给定类型的对象T. ObservableCollection的特殊之处在于它是“告诉”观察者添加对象或删除对象时。这对于使用WPF实现的UI特别有用,因为实际上,当在可观察集合中添加或删除对象时,UI会自动更新。发生这种情况是因为,当绑定到可观察集合时,WPF会自动将事件处理程序添加到 ObservableCollecion的CollectionChanged 事件中。

找到了一个有用的教程here