我想在uri的Winform图像上绑定一些图像。有时可以,但是有时不可以
[image.cs]
parameter
}
[image.xaml.cs]
public void DownloadImage(Uri Uri)
{
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.CacheOption = System.Windows.Media.Imaging.BitmapCacheOption.OnLoad;
bi.UriSource = Uri;
bi.DownloadCompleted += Bi_DownloadCompleted;
bi.EndInit();
}
private void Bi_DownloadCompleted(object sender, EventArgs e)
{
BitmapImage bi = new BitmapImage();
bi = (BitmapImage)sender;
img.Source = bi;
在...
<Image Source ="{Binding bi}" Name="img"/>
...
行下的标记断点之后,有时bi.EndInit();
属性设置为true,然后才有效bi.IsDownloading
,有时属性{false}设置为false,然后它也不起作用,Bi_DownloadCompleted
。 / p>
当我在网址值上设置相同的Bi_DownloadCompleted
时,也会发生这种情况。
答案 0 :(得分:0)
Bi_DownloadCompleted以异步方式调用。因此,如果仅在bi.EndInit()行中设置一个断点,则可能图像仍在下载中,因此这就是为什么您将IsDownloading属性设置为true或false的原因。
尝试删除bi.EndInit();在DownloadImage中排成一行并设置以下内容:
private void Bi_DownloadCompleted(object sender, EventArgs e)
{
BitmapImage bi = (BitmapImage)sender;
if (bi != null)
{
bi.EndInit();
img.Source = bi;
}
}