具有MVVM和WCF Ria服务的Silverlights数据表单

具有MVVM和WCF Ria服务的Silverlights数据表单,silverlight,mvvm,wcf-ria-services,dataform,Silverlight,Mvvm,Wcf Ria Services,Dataform,晚上好, 我希望有人能帮助我理解如何将Silverlight数据表单与使用WCF Ria服务的ViewModel结合起来。我试图实现的是使用DataForm管理我的实体集合,并利用其内置的导航、添加、编辑和删除功能。然而,我很难将它与我的ViewModel和Ria服务捆绑在一起 据我所知,数据表单需要绑定到可观测集合。但是,当我从WCF Ria服务上下文查询时。即 _context.Load(_context.GetAllCustomersQuery(), loadCustomersQueryC

晚上好,

我希望有人能帮助我理解如何将Silverlight数据表单与使用WCF Ria服务的ViewModel结合起来。我试图实现的是使用DataForm管理我的实体集合,并利用其内置的导航、添加、编辑和删除功能。然而,我很难将它与我的ViewModel和Ria服务捆绑在一起

据我所知,数据表单需要绑定到
可观测集合
。但是,当我从WCF Ria服务上下文查询时。即

_context.Load(_context.GetAllCustomersQuery(), loadCustomersQueryCallback, true);
我将在回调方法中接收回一个IQueryable,我必须将其转换为
observateCollection
这样

Customers=新的ObservableCollection(\u context.Customers)

客户在我的ViewModel中是一个属性,就像这样

    public ObservableCollection<Customer> Customers
    {
        get { return _customers; }
        set
        {
            if (_customers != value)
            {
                _customers = value;
                OnPropertyChanged("Customers");
            }
        }
    }
公共可观测收集客户
{
获取{return\u customers;}
设置
{
如果(_客户!=价值)
{
_顾客=价值;
不动产变更(“客户”);
}
}
}
数据表单绑定到ViewModel的Customers属性,我可以查看数据源中的数据,可以在实体之间导航,可以编辑现有实体并将更改保留回数据库,但不能添加或删除实体

我对客户财产的处理是否正确?我是否通过强制转换到一个新的ObservableCollection来“断开”与上下文的连接,因此实际上没有从上下文中添加或删除实体

非常感谢您的帮助


您好,

我想您在最后一个问题中提到了这个问题。当您创建一个新的ObservableCollection时,您已经断开了与集合更改跟踪(添加和删除)的连接。除了使用OC,还有许多其他选项值得考虑。在您的情况下,EntitySet或EntityList可能是最好的选择。有关这些类型的详细信息,请参阅我在上的帖子。

您可以使用:

Customers.Clear(); // Or dispose every customer if it is Disposable
Customers = new ObservableCollection(result.ToList());