使用 Silverlight 和 WCF 服务的双向绑定

本文关键字:绑定 服务 Silverlight WCF 使用 | 更新日期: 2023-09-27 18:32:18

为了简化问题,我有一个文本框控件,我想应用双向绑定。例如,在服务器端,我有一个名为 Customer 的对象类,Silverlight 应用程序显然是一个单独的项目。

public class Customer
{
    public string Name{ get; set; }
}

在 WCF 服务中,我有一个查询,该查询填充客户名称,并返回类型为"客户"的列表。

List<Customer> data = new List<Customer>();

在客户端,我将其绑定到文本框控件:

<TextBox Canvas.Left="345" Canvas.Top="12" Height="23" Name="tb_customer" Width="120" Text="{Binding Path=Name}" />
List<ServiceReference.Customer> data = e.Result;
tb_customer.DataContext = data[0];

这工作正常,并将客户名称绑定到文本框控件。但我的问题是,当我在客户端更改值时,如何将修改后的客户名称发送回数据源,在本例中是 sqlserver 中名为 customers 的表。我是否需要在客户类上实现 INotifiyPropertyChanged?但显然客户类位于服务器端,所以我是否需要在客户端创建客户类的本地实例,并通过 wcf 服务将这些更改上传回服务器?

使用 Silverlight 和 WCF 服务的双向绑定

像这样设置文本框:

<TextBox Canvas.Left="345" Canvas.Top="12" Height="23" Name="tb_customer" Width="120" Text="{Binding Path=Name, Mode=TwoWay}" />

通过此设置,对文本框值所做的更改将在本地自动更新对象的状态。 然后,您必须将更改提交回数据存储。 如果您使用的是实体框架等ORM,这很容易 - 只需在上下文中调用SubmitChanges()即可完成。 如果您不使用ORM,则必须手动处理更新。