当某些图像最初不存在时,我在 ListBox 上显示图像列表时遇到问题。
创建丢失的图像后,我尝试重新加载它们,但我仍然得到 AG_E_NETWORK_ERROR。此外,我确定图像存在,因为我正在从我拥有的闪存加载它们,并且我正在加载我的 Silverlight 应用程序,D:\Work\SilverlightApplication2\SilverlightApplication2\Bin\Debug\SilverlightApplication2TestPage.html
因此没有其他奇怪的 mambo-jumbo 正在发生。
此设置适用于 Silverlight 4,但不适用于 Silverlight 5。
更多细节:
我用 ListBox 创建了一个 Silverlight 应用程序。ListBox 绑定到列表中ObservableCollection
的ThumbnailItem
每个项目,具有一个ThumbnailPath
属性,该属性是图像路径的字符串。
该文件ThumbnailPath
最初可能不存在,但是当我确定它存在时,我会调用该 PropertyChanged
事件来通知绑定ThumbnailPath
更改的人。
一个简单的测试方法是在不插入闪存驱动器的情况下加载 Silverlight 应用程序。图像加载失败后,我插入闪存驱动器并点击刷新按钮。
public class ThumbnailItem : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public string ThumbnailPath { get; set; }
public void NotifyThumbnailPathChanged() { if (PropertyChanged != null) PropertyChanged(this, new PropertyChangedEventArgs("ThumbnailPath")); }
}
public partial class MainPage : UserControl, INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
public ObservableCollection<ThumbnailItem> lImages { get; set; }
public MainPage() { ... }
private void userControl_Loaded(object sender, System.Windows.RoutedEventArgs e)
{
//loading the list items
lImages.Add(new ThumbnailItem { ThumbnailPath = "F:/onlinePhotos2/262594030.jpg" });
lImages.Add(new ThumbnailItem { ThumbnailPath = "F:/onlinePhotos2/1276943735.jpg" });
lImages.Add(new ThumbnailItem { ThumbnailPath = "F:/onlinePhotos2/1632696970.jpg" });
lImages.Add(new ThumbnailItem { ThumbnailPath = "F:/onlinePhotos2/1656387141.jpg.original.jpg" });
lImages.Add(new ThumbnailItem { ThumbnailPath = "F:/onlinePhotos2/1699209377.jpg" });
}
private void ButtonRefresh_Click(object sender, System.Windows.RoutedEventArgs e)
{
//refreshing the list after the images exist
foreach (ThumbnailItem tsi in lImages)
{
string temp = tsi.ThumbnailPath;
tsi.ThumbnailPath = null;
tsi.NotifyThumbnailPathChanged();
tsi.ThumbnailPath = temp;
tsi.NotifyThumbnailPathChanged();
}
}
}
TL; 博士;如何重新加载绑定到不存在但现在确实存在的图像