У меня есть приложение 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;
}