Image控件的一個很好的功能是我們可以指定一個Uri作爲ImageSource,並且圖像會自動爲我們下載。這很棒! 但是,控件似乎沒有指示圖像加載是否正在進行的屬性。在哪裏可以找到WPF圖像控件的狀態?
是否有一個屬性告訴我們圖像控件的狀態(下載,下載等)?
謝謝!
Image控件的一個很好的功能是我們可以指定一個Uri作爲ImageSource,並且圖像會自動爲我們下載。這很棒! 但是,控件似乎沒有指示圖像加載是否正在進行的屬性。在哪裏可以找到WPF圖像控件的狀態?
是否有一個屬性告訴我們圖像控件的狀態(下載,下載等)?
謝謝!
只要您的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";
}
希望它能幫助!
嗯 - 這是一個很好的問題。我查看了MSDN上ImageSource類的文檔,看起來好像沒有任何東西可以獲取這些信息。
這就是說,你可以手動開始下載並設置圖像控件的源屬性,一旦下載完成?你肯定知道下載是否完成...
我無法控制下載...我只是設置了Uri,我完成了。當然,我可以嘗試重新發明輪子,並下載自己的圖片,顯示它們等,但我不認爲我想這樣做...... – Martin 2008-12-01 01:30:53
在Image DP上設置OnPropertyChanged?
VB:`AddHandler bi.DownloadCompleted,bi_DownloadCompleted` – sinni800 2012-05-13 23:23:04