C# WPF图标预加载

C# WPF图标预加载,c#,wpf,performance,image,preloading,C#,Wpf,Performance,Image,Preloading,我的应用程序在货币方面做了很多工作,因此经常使用我拥有的80-90.ICO文件作为资源,这些文件是国家标志,用于表示每种货币。大多数屏幕都使用这些,每次使用都要重新加载它们似乎是一种浪费,特别是当我使用带有IMG标记的datatemplate时,它会冻结GUI,或者在ListView等中加载这些内容时使其性能非常差 WPF中是否有推荐的方法或设计,可以将这些图像预加载到WPF应用程序空间中,以便在引用它们时,它们已经被全局缓存和加载,因此我只需在应用程序启动时将它们加载到内存中一次,那么从那时起

我的应用程序在货币方面做了很多工作,因此经常使用我拥有的80-90.ICO文件作为资源,这些文件是国家标志,用于表示每种货币。大多数屏幕都使用这些,每次使用都要重新加载它们似乎是一种浪费,特别是当我使用带有IMG标记的datatemplate时,它会冻结GUI,或者在ListView等中加载这些内容时使其性能非常差

WPF中是否有推荐的方法或设计,可以将这些图像预加载到WPF应用程序空间中,以便在引用它们时,它们已经被全局缓存和加载,因此我只需在应用程序启动时将它们加载到内存中一次,那么从那时起,在WPF中的每次使用都是闪电般的快


谢谢

我建议将它们放入xaml中的Application.Resources中

这些文件只加载一次,在应用程序中的任何地方都可以访问。”

请参阅msdn上的

编辑: 在绑定包含IconSelect的items太类的类中,需要添加额外的属性

public BitmapImage BitmapIconSelect
{
    get
    {
        return Application.Resources[IconSelect];
    }
}
然后绑定到此属性:

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

我是徒手编写这段代码的,所以我不确定它是否可以编译,但我希望您能理解我的观点。

我建议将它们放在xaml中的Application.Resources中

这些文件只加载一次,在应用程序中的任何地方都可以访问。”

请参阅msdn上的

编辑: 在绑定包含IconSelect的items太类的类中,需要添加额外的属性

public BitmapImage BitmapIconSelect
{
    get
    {
        return Application.Resources[IconSelect];
    }
}
然后绑定到此属性:

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

我徒手编写了这段代码,所以我不确定它是否可以编译,但我希望你明白我的意思。

你尝试过使用应用程序级资源字典吗?你尝试过使用应用程序级资源字典吗?我是从绑定中使用它的,尽管是在数据模板中-如何使用绑定的静态资源?谢谢你的链接,但我仍然不确定如何使用资源字典来实现这一点。为了澄清,显示对象的绑定属性是位图图标的文件名,即USD.ico或GBP.ico,但这来自对象属性。目前,它被绑定为我上面的评论,但我不知道如何使用{StaticResource标记可以帮助我,因为我必须在XAML中显式设置资源的名称,而不是在运行时从绑定属性中设置,如果这有意义的话?我是从绑定中使用它的,尽管是在datatemplate中-如何将静态资源与绑定一起使用?感谢链接,但我仍然不确定如何使用资源要澄清的是,所显示对象的绑定属性是位图图标的文件名,即USD.ico或GBP.ico-但这来自对象属性。目前它被绑定为我上面的注释,但我不知道如何使用{StaticResource标记对我很有帮助,因为我必须在XAML中显式设置资源的名称,而不是在运行时将其从绑定属性中设置,如果这样做有意义的话?