当我的页面加载并按button1
时,我可以获取图像并可以看到它。
但是当我第二次点击它时根本不起作用。我调试了它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;
}
答案 0 :(得分:1)
尝试更改Load的重载:
this._myDomainContext.Load(screen, LoadBehavior.RefreshCurrent, true).Completed+= ...
答案 1 :(得分:0)
如果你的问题,我不能完全确定原因,但我对使用BitmapImage
的代码有一些指示。
image1.Source
属性赋予实际来源之前,无需将其设置为null
。BitmapImage
。BitmapImage
时,我个人使用BeginInit(...)
,StreamSource
和EndInit(...)
。