C# wp7-如何检查图像是否已加载
我正在尝试将一些数据绑定到带有自定义项模板的wp7列表框,该模板包含每个条目的缩略图。问题是-我遇到了一个问题-当链接图像重定向到404页面时-我得到了一个空图像,坦白说-我不知道如何检查加载的数据是否是正确的图像。。。下面是我现在使用的代码:C# wp7-如何检查图像是否已加载,c#,windows-phone-7,bitmapimage,C#,Windows Phone 7,Bitmapimage,我正在尝试将一些数据绑定到带有自定义项模板的wp7列表框,该模板包含每个条目的缩略图。问题是-我遇到了一个问题-当链接图像重定向到404页面时-我得到了一个空图像,坦白说-我不知道如何检查加载的数据是否是正确的图像。。。下面是我现在使用的代码: <ListBox.ItemTemplate> <DataTemplate> <StackPanel Orientation="Horiz
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel Orientation="Horizontal">
<Grid Height="62"
Width="62">
<Image Stretch="UniformToFill"
HorizontalAlignment="Center"
VerticalAlignment="Center">
<Image.Source>
<BitmapImage UriSource="{Binding MiniImage}"
CreateOptions="DelayCreation, BackgroundCreation" />
</Image.Source>
</Image>
</Grid>
<StackPanel HorizontalAlignment="Center"
VerticalAlignment="Center">
<TextBlock Text="{Binding Title}"
Margin="12,4,0,0"
FontSize="26"
FontFamily="Segoe WP Bold" />
<TextBlock Text="{Binding PubDate}"
Margin="12,0,0,9"
FontSize="16"
FontStyle="Italic"
Padding="5,0,0,0"
FontFamily="Segoe WP"
Opacity="0.5" />
</StackPanel>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
下面是隐藏的代码:
foreach (var item in RssFeedItems)
{
var inputString = item.Description;
var tempImageList = new List<string>();
var inputStringBuilt = new StringBuilder(item.Description);
var temp = 1;
while (temp > 0)
{
var img = inputString.IndexOf("<img", StringComparison.Ordinal);
var src = inputString.IndexOf("src", img, StringComparison.Ordinal);
var quot = inputString.IndexOf('"', src + 5);
var len = quot - (src + 5);
var sub = len > 0 ? inputString.Substring(src + 5, len) : null;
tempImageList.Add(sub);
var closingBracket = inputString.IndexOf(">", src, StringComparison.Ordinal);
inputStringBuilt.Clear();
inputStringBuilt.Append(inputString);
inputStringBuilt.Remove(img, closingBracket - img);
inputString = inputStringBuilt.ToString();
temp = inputString.IndexOf("<img", StringComparison.Ordinal);
}
item.MiniImage = tempImageList[0] ?? "ApplicationIcon.png";
var f = tempImageList.IndexOf(null) - 1;
while (f >= 0)
{
PostImages.Add(tempImageList[f]);
f--;
}
tempImageList.Clear();
FirstListBox.Items.Add(item);
}
有什么想法吗?您可能希望在代码隐藏中发出一个web请求,将结果传递到PicturedCoder.DecodeJpeg,并绑定到从该代码返回的WriteableBitmap,而不是URL。通过这种方式,您可以检测web请求中的错误情况并做出相应的反应。图像元素有一个名为“您将获得ExceptionRoutedEventArgs中包含的异常”的事件
您可以使用它来检测加载图像时的错误。hmmm。。。也许是个愚蠢的问题,但是。。。它只适用于JPG吗?PNG呢?另一件事是——我该怎么做?我的意思是-如何将返回的WriteableBitmap直接链接到XAML中ItemTemplate中的BitmapImage而不是URI源?@lashman-WriteableBitmap是可以设置该属性的内容之一。是的,我知道。。。问题是-我需要对其CreateOptions=DelayCreation、BackgroundCreation参数使用BitmapImage。。。而且BitmapImage没有源。。。它只有直接来自XAML的URI源,至少我认为您需要更灵活地思考您的问题是什么。在我看来,你的选择是:1。自己做每件事并控制流程2。让平台处理所有事情,而不是在出现故障时得到通知。考虑到你的要求,我认为1超过了你认为2可能给你带来的任何好处。。。好如果没有别的办法。谢谢:还有一个问题-我如何处理沿途的图像加载?您知道-在将所有这些图像添加到列表框时不要阻止UI线程。。。而且不使用任何预先制作的控件,如LazyBox等。