Как использовать двустороннюю привязку, если привязываемый экземпляр не реализует INotifyPropertyChanged в Silverlight 2? - PullRequest
1 голос
/ 19 января 2009

Я пытаюсь написать довольно простой пользовательский элемент управления в Silverlight 2, который позволяет пользователю искать существующие адреса, по желанию обновлять выбранный адрес и добавлять новые адреса.

С этой целью я собрал простой сервис WCF, который позволяет выполнять простые запросы, и в настоящее время я подключаю его к текстовому полю, комбинации списков (вскоре будет заменено AutoCompleteBox из набора инструментов Silverlight).

Моя проблема скорее заключается в понимании, тип возврата из моего сервиса имеет тип IList

, а Address не реализует INotifyPropertyChanged и не подходит для объектов, возвращаемых из сервиса (которые также могут вызываться другие клиенты) для обеспечения специфической функциональности SL2. Каков наилучший подход для упрощения двусторонней привязки для редактирования существующих адресов.

Основная идея выглядит следующим образом:

Пользователь вводит информацию в текстовое поле Служба, вызываемая для получения совпадающих адресов IList
, которая возвращается как ObservableCollection
в Reference.cs для моей службы Возвращаемые значения устанавливаются в качестве источника элементов списка Пользователь выбирает правильный адрес и указывает, что требуется обновление Экземпляр адреса, связанный с контейнером управления, содержащим несколько текстовых полей

По сути, я хочу, чтобы любые изменения в связанных текстовых полях автоматически отражались в экземпляре Address, но без INotifyPropertyChanged как это будет работать? Нужно ли создавать другой класс в моем приложении SL2, который эффективно переопределяет реализации свойств для моего объекта данных службы?

Может ли кто-нибудь указать мне правильное направление на это, поскольку это просто не имеет смысла для меня ...

Приветствия

Steve

1 Ответ

3 голосов
/ 19 января 2009

Как вы генерируете прокси WCF? Я использовал «Add Service Reference ...» из проекта SL2 в VS2008, и мои сгенерированные прокси-серверы реализуют INotifyPropertyChanged (даже если типы на стороне сервера этого не делают).

Для обычного WCF (не SL2), svcutil имеет переключатель /enableDataBinding, который делает все это. Если вы используете IDE, возможно, установлен флажок.

Поскольку эти прокси-серверы генерируются из метаданных, они полностью независимы от кода на стороне сервера, поэтому нет проблем с версией SL2, реализующей INotifyPropertyChanged.

...