2012-04-25 63 views
1

爲了簡化問題,我有一個單獨的文本框控件,我想應用雙向綁定。我有一個名爲Customer的對象類,例如在服務器端,silverlight應用程序顯然是一個單獨的項目。使用Silverlight和WCF服務的雙向綁定

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 in sqlserver的表。我需要在客戶類上實現INotifiyPropertyChanged嗎?但顯然客戶類是坐在服務器端,所以我需要在客戶端創建客戶類的本地實例,並通過wcf服務將這些更改上傳回服務器?

回答

1

設置TextBox像這樣:

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

採用這種設置,在文本框的值所做的更改會自動更新對象的狀態,在本地。然後您必須將更改提交回數據存儲。如果您使用的是諸如Entity Framework之類的ORM,那很簡單 - 只需在您的上下文中調用SubmitChanges()即可完成。如果您不使用ORM,則必須手動處理更新。

+0

如果我不使用ORM,手動更新wcf服務的最佳方法是什麼? – 2012-04-27 10:07:55

+0

您必須將對象發送回您的服務(我假設您使用的是RIA服務)並手動編寫並執行更新查詢。 – 2012-04-30 14:52:28