2012-01-10 12 views
1

私のページがロードされ、私がbutton1を押すとイメージを取得して見ることができます。SIlverlight 4.0の下でWPFイメージの問題を更新します。

しかし、もう一度クリックすると、全く機能しません。私はそれをデバッグしたbutton1_Click(...)と私は確信してimageData != null

私は本当に何が起きているのか理解できません...助けてください!

private void button1_Click(object button, RoutedEventArgs e) 
{ 
    Guid sid = Guid.Parse("087462df-e4b6-484c-879e-cccc37b4c1f4"); 
    EntityQuery<Screenshot> screen = this._myDomainContext.GetScreenshotQuery(sid); 
    this._myDomainContext.Load(screen).Completed += (sender, args) => 
    { 
     try 
     { 
      byte[] imageData = (((LoadOperation<Screenshot>)sender).Entities.FirstOrDefault()).Screen; 
      if (imageData != null) 
      { 
       BitmapImage img = Utilities.Graphics.GetImage(imageData); 
       img.CreateOptions = BitmapCreateOptions.IgnoreImageCache; 

       image1.Source = null; 
       image1.Source = img; 
      } 
     } 
     catch 
     { 
     } 

    }; 
} 

public static BitmapImage GetImage(byte[] rawImageBytes) 
{ 
    BitmapImage imageSource = null; 

    try 
    { 
     using (MemoryStream stream = new MemoryStream(rawImageBytes)) 
     { 
      stream.Seek(0, SeekOrigin.Begin); 
      BitmapImage b = new BitmapImage(); 
      b.SetSource(stream); 
      imageSource = b;  
     } 
    } 
    catch 
    { 
    } 

    return imageSource; 
} 

答えて

1

負荷の過負荷を変更してみてください:あなたの問題ならば

 

this._myDomainContext.Load(screen, LoadBehavior.RefreshCurrent, true).Completed+= ... 
 
+0

仲間ありがとう!あなたを永遠に尊敬してください!それはうまく動作します! –

+0

それはあなたのために働いてうれしい! – JMarsch

0

は私が原因で完全にわからないんだけど、私は上のいくつかのポインタを持っていますBitmapImageの使用に関するコード。

  1. 実際のソースでそれを割り当てる前にnullimage1.Sourceプロパティを設定する必要はありません。
  2. コントロールがストリームを読み取ろうとしている場合に、渡したストリームをBitmapImageに処理しないでください。
  3. BitmapImageで作業する場合、私は個人的にBeginInit(...),StreamSourceおよびEndInit(...)を使用します。
+0

こんにちは!あなたのご意見ありがとうございます! @ JMarschのソリューションはうまく動作します。しかし、あなたが提案したようにコードを編集します。ありがとうございました! –

関連する問題