2012-04-30 13 views
1

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

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

     } 

任意のアイデア:

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

、ここでは、背後にあるコードですか?

答えて

0

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

+0

hmmm ...おそらくばかげた質問ですが、それはjpgでのみ機能しますか? pngはどうですか?もう1つは、どうすればいいのですか?つまり、返された 'WriteableBitmap'をXAMLの' ItemTemplate'( 'UriSource'ではなく)の' BitmapImage'に直接リンクするにはどうすればいいですか? – lashman

+0

@lashman '' - 'WriteableBitmap'は、そのプロパティを設定できるものの1つです。 – asveikau

+0

ええ、私は知っている...問題は - その 'CreateOptions =" DelayCreation、BackgroundCreation "のパラメータに' BitmapImage'を使う必要があり、 'BitmapImage'に' Source'がありません...それは(少なくともXAMLから直接の)「UriSource」しか持っていません – lashman

0

Image要素と呼ばれるイベントがありImageFailedあなたはあなたが画像をロードする際にエラーを検出するためにこれを使用することができます(ExceptionRoutedEventArgsに含まれる)例外

を取得します。

関連する問題