在哪里可以找到WPF图像控件的状态?

时间:2008-12-01 00:31:57

标签: .net wpf image .net-3.5

Image控件的一个很好的功能是我们可以指定一个Uri作为ImageSource,并为我们自动下载图像。这很棒! 但是,控件似乎没有指示图像加载是否正在进行的属性。

是否有属性告诉我们Image控件的状态(Downloading,Downloaded等)?

谢谢!

3 个答案:

答案 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)

嗯 - 这是一个很好的问题。我在MSDN上查看了ImageSource类的文档,看起来没有任何东西可以获取这些信息。

话虽这么说,你可以手动启动下载并在下载完成后设置Image控件的Source属性吗?你肯定知道下载是否已经完成......

答案 2 :(得分:0)

在Image DP上设置OnPropertyChanged?