Событие OnPropertyChanged в WCF DataContract - PullRequest
1 голос
/ 18 ноября 2010

Я довольно новичок в реализации WCF, и у меня возникают трудности с некоторыми привязками данных. А именно, у меня есть 2 переключателя внутри моего приложения Silverlight (свойства привязаны к свойствам в одном из моих контрактов на данные). У меня также есть замаскированное текстовое поле, которое изменяется в зависимости от выбранной радиокнопки. Текст «Маскированного текстового поля» связан с другим свойством контракта данных WCF.

Мой мыслительный процесс состоял в том, чтобы реализовать интерфейс «INotifyPropertyChanged» в контракте данных и использовать событие «OnPropertyChanged», которое заставило бы замаскированное текстовое поле изменить свою «маску», основываясь на выбранном переключателе. Ну, это не сработало так хорошо, как я не могу заставить событие OnPropertyChanged работать должным образом из WCF.

У вас, ребята, есть какие-нибудь обходные пути к этой, надеюсь, тривиальной проблеме?

Заранее большое спасибо, -Т

Ответы [ 2 ]

2 голосов
/ 19 ноября 2010

Ваша фраза "Я не могу заставить событие OnPropertyChanged работать должным образом из WCF."запускает несколько предупреждающих звонков.

Изменяются ли данные на клиенте или на сервере?

Необходимо понимать, что если служба WCF возвращает объект клиенту, то клиент имеет копия этого объекта, а не ссылка .Любые события, выданные серверной копией объекта, не будут получены клиентом.

Если вы хотите, чтобы уведомления данных запускались сервером и принимались клиентом, вам придется реализовать это с помощью дуплекса.(двусторонняя) привязка.Вы не можете реализовать уведомления сервер-клиент, используя события .NET (по крайней мере, не для распределенной коммуникационной части).

1 голос
/ 19 ноября 2010

Я получил то, что мне было нужно, создав класс-оболочку на стороне клиента (который расширил контракт данных WCF). Затем я реализовал интерфейс INotifyPropertyChanged для этого класса-оболочки. Это может быть не самый красивый обходной путь, но он выполняет свою работу.

...