2012-04-25 19 views
1

質問を簡略化するために、双方向バインディングを適用する1つのテキストボックスコントロールがあります。私はサーバー側に例えばCustomerというオブジェクトクラスを持っていますが、Silverlightアプリケーションは明らかに別のプロジェクトです。SilverlightとWCFサービスを使用した双方向バインディング

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

WCFサービスでは、顧客名が入力され、顧客タイプの一覧を返すクエリがあります。

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

は、クライアント側では、私は、これは、TextBoxコントロールにバインドされてい:

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

これが正常に動作している、とTextBoxコントロールに顧客名を結合しています。しかし、私の質問は、クライアント側で値を変更すると、変更された顧客名をデータソースに戻す方法です(この場合、sqlserverのcustomersという名前のテーブル)。顧客クラスにINotifiyPropertyChangedを実装する必要がありますか?しかし明らかに顧客クラスはサーバー側にあるので、クライアント側の顧客クラスのローカルインスタンスを作成し、wcfサービスを介してこれらの変更をサーバーにアップロードする必要がありますか?このようにテキストボックスを設定し

答えて

1

:この設定で

<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サービスのアップデートを処理する最良の方法は何ですか? –

+0

オブジェクトをサービスに戻す必要があります(私はあなたがRIAサービスを使用していると仮定します)、手動で更新クエリを作成して実行します。 –

関連する問題