У меня есть класс данных, который возвращает некоторые объекты из службы данных wcf в приложение silverlight:
void ExecuteWipReportQuery (DataServiceQuery qry)
{
context = new StaffKpiServices.HwfStaffKpiEntities (theServiceRoot);
qry.BeginExecute (новый AsyncCallback (a =>
{
пытаться
{
IEnumerable results = qry.EndExecute (a);
OnDataLoadingComplete (новый WipReportByMonthEventArgs (результаты));
}
поймать (исключение ex)
{
OnDataLoadingError (ех);
}
}), ноль);
}
Затем модель представления получает эти результаты и добавляет их в наблюдаемую коллекцию:
void wipReportDataContainer_DataLoadingComplete (отправитель объекта, Domain.WipReportByMonthEventArgs e)
{
Application.Current.RootVisual.Dispatcher.BeginInvoke (() =>
{
this.wipReport.Clear ();
строка s = "";
foreach (StaffKpiServices.WipReportByMonth r in e.Results)
{
//this.wipReport.Add(r);
//s += r.ClientCode;
this.wipReport.Add(new StaffKpiServices.WipReportByMonth
{
ClientCode = r.ClientCode,
ClientGroup = r.ClientGroup,
ClientName = r.ClientName,
ClientType = r.ClientType,
FinancialYear = r.FinancialYear,
Month = r.Month,
OSDebt = r.OSDebt,
OSDisb = r.OSDisb,
OSOther = r.OSOther,
OSTime = r.OSTime,
OSTotal = r.OSTotal,
PartnerUserName = r.PartnerUserName,
PracName = r.PracName,
Recov = r.Recov,
RecovFees = r.RecovFees,
RecPerc = r.RecPerc,
SicCode = r.SicCode,
SicParentName = r.SicParentName,
StaffName = r.StaffName,
YTDFees = r.YTDFees,
YTDTime = r.YTDTime
});
s += r.ClientCode + " ";
}
string s2 = "";
foreach (var p in this.wipReport)
{
s2 += p.ClientCode + " ";
}
OnPropertyChanged("WipReport");
if (null != LoadComplete)
{
LoadComplete(this, EventArgs.Empty);
}
});
}
Все работает нормально, но если данные обновляются два или три раза, тогда повторный запуск коллекций содержит правильное количество объектов, но все с дублирующимися свойствами. Кажется, нет никаких причин, почему, как будто foreach не работает над коллекцией, но в то же время не возвращает никаких ошибок. Есть идеи?