2008-12-01 58 views
2

Image控件的一個很好的功能是我們可以指定一個Uri作爲ImageSource,並且圖像會自動爲我們下載。這很棒! 但是,控件似乎沒有指示圖像加載是否正在進行的屬性。在哪裏可以找到WPF圖像控件的狀態?

是否有一個屬性告訴我們圖像控件的狀態(下載,下載等)?

謝謝!

回答

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"; 
} 

希望它能幫助!

+0

VB:`AddHandler bi.DownloadCompleted,bi_DownloadCompleted` – sinni800 2012-05-13 23:23:04

0

嗯 - 這是一個很好的問題。我查看了MSDN上ImageSource類的文檔,看起來好像沒有任何東西可以獲取這些信息。

這就是說,你可以手動開始下載並設置圖像控件的源屬性,一旦下載完成?你肯定知道下載是否完成...

+0

我無法控制下載...我只是設置了Uri,我完成了。當然,我可以嘗試重新發明輪子,並下載自己的圖片,顯示它們等,但我不認爲我想這樣做...... – Martin 2008-12-01 01:30:53

0

在Image DP上設置OnPropertyChanged?

相關問題