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