Image控件的一个很好的功能是我们可以指定一个Uri作为ImageSource,并为我们自动下载图像。这很棒! 但是,控件似乎没有指示图像加载是否正在进行的属性。
是否有属性告诉我们Image控件的状态(Downloading,Downloaded等)?
谢谢!
答案 0 :(得分:2)
只要您的ImageSource是BitmapImage,您就可以使用BitmapImage.DownloadCompleted事件。到目前为止我发现的唯一问题是它只能在C#中运行,所以你会失去一些灵活性。我猜你可以从XAML访问该事件,但我不确定如何。以下示例通过单击按钮开始加载图像,并在图像加载完成后更新标签。
XAML:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="50" />
<RowDefinition Height="50" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<Image x:Name="image" Grid.Row="2"/>
<Label x:Name="label" Content="aaa" Grid.Row="1" />
<Button Click="Button_Click" Content="Click to load image" Grid.Row="0" />
</Grid>
代码:
private void Button_Click(object sender, RoutedEventArgs e)
{
BitmapImage bi = new BitmapImage();
bi.BeginInit();
bi.DecodePixelHeight = 100;
bi.CacheOption = BitmapCacheOption.OnLoad;
bi.UriSource = new Uri("bigImageUri");
bi.EndInit();
bi.DownloadCompleted += new EventHandler(bi_DownloadCompleted);
image.Source = bi;
}
void bi_DownloadCompleted(object sender, EventArgs e)
{
label.Content = "dl completed";
}
希望它有所帮助!
答案 1 :(得分:0)
话虽这么说,你可以手动启动下载并在下载完成后设置Image控件的Source属性吗?你肯定知道下载是否已经完成......
答案 2 :(得分:0)
在Image DP上设置OnPropertyChanged?