2012-08-30 6 views
2

Mon application fait beaucoup de travail avec les devises et utilise donc fréquemment des fichiers .ICO 80-90 que j'ai comme ressources qui sont des drapeaux de pays, pour représenter chaque monnaie. La plupart des écrans les utilisent et il semble inutile de les recharger à chaque utilisation, d'autant plus que lorsque j'utilise un datatemplate avec une balise IMG, il fige l'interface graphique ou la rend très inefficace lors du chargement dans ListViews etc.WPF icon preeloading

Y a-t-il un moyen ou un design recommandé dans WPF pour précharger ces images dans l'espace d'application WPF afin qu'elles soient déjà mises en cache et chargées globalement à chaque fois qu'elles sont référencées, alors je n'ai qu'à les charger en mémoire au démarrage de l'application, alors tout usage à partir de là est rapide comme l'éclair?

Merci

+0

Avez-vous essayé d'utiliser un niveau ResourceDictionary au niveau de l'application? – Gishu

Répondre

0

je suggère de les placer dans les Application.Resources dans votre XAML.

Ceux-ci sont chargés une seule fois et accessibles partout dans votre application. '

Voir How to: Use Application Resources sur msdn.

EDIT: Dans votre classe où vous liez vos articles trop (classe qui contient IconSelect), vous devez ajouter une propriété supplémentaire.

public BitmapImage BitmapIconSelect 
{ 
    get 
    { 
     return Application.Resources[IconSelect]; 
    } 
} 

Et puis lier à cette propriété:

<Image Source="{Binding BitmapIconSelect, IsAsync=True, Mode=OneWay}" Width="20" Height="20" /> 

j'ai écrit ce code Freehand, donc je ne sais pas s'il compile, mais j'espère que vous obtenez mon point.

+0

Je l'utilise à partir d'une liaison mais dans un datatemplate - comment puis-je utiliser des ressources statiques avec une liaison? NZJames

+0

Je voudrais vous référer à http://stackoverflow.com/a/606986/ 637425 – SynerCoder

+0

Merci pour le lien, mais je ne sais toujours pas comment je peux utiliser les dictionnaires de ressources pour cela. Pour clarifier, la propriété liée de l'objet affiché est un nom de fichier d'une icône bitmap, c'est-à-dire USD.ico ou GBP.ico - mais cela provient de la propriété de l'objet. Pour l'instant c'est lié comme mon commentaire ci-dessus, mais je ne vois pas comment utiliser une balise {StaticResource m'aide aussi sûrement que je dois explicitement définir le nom de la ressource dans le XAML, pas provenir d'une propriété liée à l'exécution, si cela a du sens? – NZJames