1

各エントリのサムネイル画像を含むwp7リストボックス(カスタムアイテムテンプレート付き)にデータをバインドしようとしています。事は-私は1つの問題に遭遇しています-リンクされた画像が404ページにリダイレクトされるとき-結果として空の画像を取得し、率直に言って-ロードされたデータが適切な画像であるかどうかを確認する方法がわかりません...これが私が今使っているコードです:

<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);

        }

何か案は?

4

2 に答える 2

0

Image 要素にはImageFailedというイベントがあり、例外が発生します (ExceptionRoutedEventArgs に含まれます)。

これを使用して、画像をロードする際のエラーを検出できます。

于 2012-05-04T19:03:42.530 に答える
0

コード ビハインドで Web リクエストを発行し、URL の代わりに結果を渡して、そこから返されたものにPictureDecoder.DecodeJpegバインドしたい場合があります。WriteableBitmapこのようにして、Web リクエストのエラー状態を検出し、それに応じて対応できます。

于 2012-04-30T02:07:12.123 に答える