【发布时间】:2012-03-04 20:02:12
【问题描述】:
我有一个 Telerik TransitionControl,它向最终用户显示广告。逻辑是这样编写的,即广告图像将在后面异步下载。控件将在可用时显示图像。我正在使用 ObservableCollection 来保存广告图像。成功下载图像后,新的图像信息将添加到此 ObservableCollection。但是,Telerik TransitionControl 并未使用新图像进行更新。
我相信 ObservableCollection 不需要调用 OnNotifyPropertyChanged,因为它将在内部调用
代码如下
//Inside the AdvertUserControl.xaml.cs
ViewModel vm = new ViewModel();
DataContext = vm;
this.radControl.SetValue(AdRotatorExtensions.AdRotatorExtensions.ItemsSourceProperty, vm.SquareAdsVertical);
//ViewModel.cs里面
public ReadOnlyObservableCollection<Advert> SquareAdsVertical
{
get
{
if (AdsManager.VerticalAds == null)
{
return null;
}
return new ReadOnlyObservableCollection<Advert>(AdsManager.VerticalAds);
}
}
// Inside DownloadManager.cs
private static ObservableCollection<Advert> adsToShowVertical = new ObservableCollection<Advert>();
public static ObservableCollection<Advert> VerticalAds
{
get { if (adsToShowVertical != null) return adsToShowVertical;
return null;
}
}
public static void OnDownloadComplete(Object sender, AsyncCompletedEventArgs e)
{
try
{
if(!e.Cancelled)
{
if (e.Error == null)
{
Advert ad = e.UserState as Advert ;
adsToShowVertical.Add(ad );
}
}
【问题讨论】: