1

質問を簡単にするために、双方向バインディングを適用したい単一のテキストボックスコントロールがあります。たとえば、サーバー側に 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 サービス経由でサーバーにアップロードする必要がありますか?

4

1 に答える 1

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を使用していない場合は、更新を手動で処理する必要があります。

于 2012-04-25T16:43:52.687 に答える