2012-04-25 2 views
1

Чтобы упростить вопрос, у меня есть один элемент управления текстовым полем, который я хочу применить для двусторонней привязки. У меня есть класс объектов с именем Customer, например, на стороне сервера, приложение silverlight, очевидно, является отдельным проектом.Двусторонняя привязка с использованием Silverlight и службы WCF

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

Это работает хорошо, и является обязательным имя клиента к элементу управления TextBox. Но мой вопрос заключается в том, что когда я изменяю значение на стороне клиента, как мне перейти на отправку измененного имени клиента обратно в источник данных, в этом случае таблица с именем customers в 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}" /> 

С помощью этой установки, изменения, внесенные в значение текстового поля будет автоматически обновлять состояние объекта локально. Затем вам нужно будет внести изменения в хранилище данных. Если вы используете ORM, например Entity Framework, это просто - просто позвоните SubmitChanges() в свой контекст, и все готово. Если вы не используете ORM, вам придется обрабатывать обновление вручную.

+0

Если я не использую ORM, то как лучше всего обращаться с обновлением службы wcf вручную? –

+0

Вам придется отправить объект обратно на свою службу (я полагаю, вы используете службу RIA) и вручную составить и выполнить запрос на обновление. –

Смежные вопросы