2012-08-30 3 views
2

내 응용 프로그램은 통화로 많은 작업을 수행하므로 각 통화를 나타내는 국가 플래그 인 리소스가있는 80-90 개의 .ICO 파일을 자주 사용합니다. 대부분의 스크린은 이것을 사용하며 특히 IMG 태그가있는 데이터 템플릿을 사용할 때 GUI가 정지되거나 ListViews 등에서로드 할 때 매우 부적절하게 처리된다는 점을 감안할 때 각 용도별로 다시로드하는 것은 낭비입니다.WPF 아이콘 미리로드

WPF에서 권장하는 방법으로 WPF 응용 프로그램 공간에 이러한 이미지를 미리로드 할 수 있습니다. 그래야 참조 할 때마다 이미 캐싱되고 전역으로로드되므로 응용 프로그램 시작시 메모리에 한 번만로드하면됩니다. 그때부터 모든 사용은 번개처럼 빠른 것입니까?

감사

+0

앱 수준의 ResourceDictionary를 사용해 보셨나요? – Gishu

답변

0

나는 당신의 XAML에서에 Application.Resources로를 배치하는 것이 좋습니다 것입니다.

앱에 한 번만로드되며 어디에서나 액세스 할 수 있습니다. '

msdn의 How to: Use Application Resources을 참조하십시오.

편집 : 당신이 너무 항목을 결합하면 추가 속성을 추가해야합니다 (IconSelect를 포함 클래스) 클래스에서 .

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

나는이 코드 프리 핸드를 썼다, 그래서 컴파일 있는지 확실하지 오전하지만 난 당신이 내 포인트를 얻을 희망 :

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

는 그리고이 속성에 바인딩합니다.

+0

데이터 템플릿에서 Binding을 사용하고 있습니다. 어떻게 바인딩을 사용하여 정적 리소스를 사용할 수 있습니까? <이미지 소스 = "{바인딩 IconSelect, IsAsync = True, 모드 = OneWay}"너비 = "20"높이 = "20"/> – NZJames

+0

http://stackoverflow.com/a/606986/ 637425 – SynerCoder

+0

링크를 제공해 주셔서 감사합니다.하지만이 사이트에서 리소스 사전을 어떻게 사용할 수 있는지 확실하지 않습니다. 명확히하기 위해 표시되는 개체의 바운드 속성은 비트 맵 아이콘의 파일 이름입니다 (예 : USD.ico 또는 GBP.ico). 그러나 이는 개체 속성에서 가져옵니다. 그 순간에 내 의견으로 바인딩되는 순간,하지만 어떻게 StaticResource 태그를 사용하여 확실하게 그때 내가 XAML에서 리소스의 이름을 명시 적으로 설정해야 할 때, 바인딩 된 속성에서 오지 않아 보지 않는다. 런타임에, 그 말이 맞는다면? – NZJames