使用Silverlight和WCF服务进行双向绑定

时间:2012-04-25 15:49:17

标签: c# silverlight

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

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

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

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];

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

1 个答案:

答案 0 :(得分:1)

将文本框设置为:

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

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