Почему служба WCF возвращает значение PropertyChanged приложению Silverlight? - PullRequest
1 голос
/ 09 декабря 2010

У меня есть приложение Silverlight 4, которое получает данные через веб-службу WCF. Веб-служба WCF извлекает данные из веб-службы XML .Net. Веб-служба XML работает нормально, так как используется в других проектах. Приложению удалось получить данные без проблем до тех пор, пока после некоторых изменений оно не начало выдавать эту ошибку:

Тип 'System.ComponentModel.PropertyChangedEventHandler' не может быть сериализован. Попробуйте пометить его атрибутом DataContractAttribute и пометить все его элементы, которые вы хотите сериализовать, атрибутом DataMemberAttribute. Кроме того, вы можете убедиться, что тип является общедоступным и имеет конструктор без параметров - все общедоступные члены этого типа будут сериализованы, и атрибуты не потребуются. Я ничего не пометил с помощью INotifyPropertyChanged или ... Изменения.

Я создал тестовую веб-страницу в проекте веб-приложения хостинга, и данные возвращаются без ошибок. Я могу просмотреть сервис WCF и убедиться, что данные были получены правильно.

Вот телефонный код:

</p> <pre><code>private void LoadJob() { this.busyIndicator.BusyContent = "Loading job..."; this.busyIndicator.IsBusy = true; var client = new BOMViewerServiceReference.BOMViewerServiceClient(); client.GetJobCompleted += new EventHandler<BOMViewerServiceReference.GetJobCompletedEventArgs>(client_GetJobCompleted); client.GetJobAsync(this.jobNumberTextBox.Text.Trim()); } void client_GetJobCompleted(object sender, BOMViewerServiceReference.GetJobCompletedEventArgs e) { if (e.Error != null) { this.busyIndicator.BusyContent = "Busy..."; this.busyIndicator.IsBusy = false; MessageBox.Show(e.Error.ToString()); return; } //Load your data here and assign the result to the CollectionViewSource. var partViewSource = (CollectionViewSource)this.Resources["jobHeadViewSource"]; partViewSource.Source = e.Result; this.busyIndicator.BusyContent = "Busy..."; this.busyIndicator.IsBusy = false; }

...