2012-02-25 7 views
2

私はテーブルがあり、多くの行に同じアイコン<Image Source="{Binding Icon}" />(6つの可能なアイコンのセットがあります)が含まれています。私はこれらのアイコンのためにテーブルのリフレッシュにかなりの時間がかかることに気づきました(毎回再生されるようです)。私のプログラムテーブルでは、3秒に1回、非常に頻繁に更新されます。これを最適化する方法はありますか?おそらく一度だけロードされるようにアイコンをリソースとして宣言します。多くの同じイメージを最適化する方法は?

答えて

4

ビューモデルごとにアイコン/イメージを作成することをお勧めします(可能であれば、静的変数を使用することに熱心ではありません)。最高のパフォーマンスを得るには、リソース上でFreeze()に電話する必要があります。

同じ問題を議論WPF image resources

public class MultipleIconsViewModel 
{ 
    private BitmapImage _icon; 

    public ImageSource Icon 
    { 
     get 
     { 
      if (_icon == null) 
      { 
       _icon = new BitmapImage(new Uri(@"..\images\myImage.png", UriKind.RelativeOrAbsolute)); 

       // can't call Freeze() until DownloadCompleted event fires. 
       _icon.DownloadCompleted += (sender, args) => ((BitmapImage) sender).Freeze(); 
      } 

      return _icon; 
     } 
    } 
} 

はまた、この記事を参照してください。

2

Iconのプロパティは何をしていますか?毎回新しいImageSourceを作成している場合は、パフォーマンスの低下を説明します。アイコンが共有されている場合は、静的に(シングルトンとして)公開し、その1つのインスタンスを使用できます。

+0

アイコンは '/Images/icon.png'のような埋め込みイメージを指す文字列です。 – Poma