2008-12-01 11 views
2

L'une des caractéristiques intéressantes du contrôle Image est que nous pouvons spécifier un Uri comme ImageSource et l'image est automatiquement téléchargée pour nous. C'est bien! Cependant, le contrôle ne semble pas avoir de propriété indiquant si le chargement de l'image est en cours ou non.Où trouver l'état du contrôle d'image WPF?

Y a-t-il une propriété nous indiquant l'état (Téléchargement, Téléchargé, etc.) du contrôle Image?

Merci!

Répondre

2

Tant que votre ImageSource est un BitmapImage, vous pouvez utiliser l'événement BitmapImage.DownloadCompleted. Le seul problème que j'ai trouvé jusqu'ici est qu'il ne fonctionne que de C#, donc vous perdriez de la flexibilité. Je suppose que vous pouvez accéder à cet événement à partir de XAML, mais je ne sais pas comment. L'exemple suivant commence à charger l'image avec le clic d'un bouton et met à jour une étiquette lorsque l'image a terminé le chargement.

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> 

code:

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

Hope it helps!

+0

VB: 'AddHandler bi.DownloadCompleted, bi_DownloadCompleted' – sinni800

0

Hmm - c'est une bonne question. J'ai regardé la documentation de la classe ImageSource sur MSDN, et il ne semble pas y avoir quelque chose là-bas pour obtenir cette information.

Cela étant dit, pourriez-vous démarrer le téléchargement manuellement et définir la propriété Source du contrôle Image une fois ce téléchargement terminé? Vous savez avec certitude si le téléchargement a été terminé ...

+0

Je n'ai aucun contrôle sur le téléchargement ... J'ai simplement mis le Uri et j'ai terminé. Bien sûr, je pourrais essayer de réinventer la roue et télécharger moi-même les images, les afficher, etc ... mais je ne pense pas que je veux faire ça ... – Martin

0

Définir un OnPropertyChanged sur le Image DP?

Questions connexes