如何在MVVM WPF应用程序中访问图像资源?
很长一段时间以来,我一直在将图像资源集成到我的WPF程序集中,但我从未真正找到一种在MVVM应用程序中绑定它们的非常好的方法 因此,我想知道一些stackoverflow用户在组装资源时是否可以分享他们自己的做法: 如何在C/VB和XAML中引用它们? 当从代码中公开它们时,您会公开什么类型?位图图像、Uri、字符串。。。 您更喜欢从视图引用它们还是通过视图模型绑定它们? 您是否使用特定的程序集来存储它们?你如何组织它们? 谢谢你的帮助- 我就是这么做的 图像保存在某些文件夹中,例如项目根文件夹中的图像。您可以将它们保存在任何程序集中。 单个映像的生成操作属性设置为资源类型。 ViewModel将图像名称保存在字符串中,比如属性MyImageName,当绑定到XAML中图像对象的源时,我将其转换为相对路径如何在MVVM WPF应用程序中访问图像资源?,wpf,image,resources,Wpf,Image,Resources,很长一段时间以来,我一直在将图像资源集成到我的WPF程序集中,但我从未真正找到一种在MVVM应用程序中绑定它们的非常好的方法 因此,我想知道一些stackoverflow用户在组装资源时是否可以分享他们自己的做法: 如何在C/VB和XAML中引用它们? 当从代码中公开它们时,您会公开什么类型?位图图像、Uri、字符串。。。 您更喜欢从视图引用它们还是通过视图模型绑定它们? 您是否使用特定的程序集来存储它们?你如何组织它们? 谢谢你的帮助- 我就是这么做的 图像保存在某些文件夹中,例如项目根文件夹
public class ImagePathConverter
{
public void Convert(...)
{
return "pack://application:,,,/MyApplicationName;component/Images/" + value.ToString();
}
}
其中MyApplicationName是短程序集的名称,该程序集下有Images文件夹
在XAML中,假设视图模型实例绑定到整个视图的数据上下文和/或至少绑定到图像的数据上下文
<Image Source="{Binding Path=MyImageName, Converter={StaticResource ImagePathConverter}}" />
但这是通过MVVM引用WPF项目中图像的典型方法之一。其他方法包括从resx或内容类型图像或二进制数据库加载图像的二进制流。在这种情况下,转换器会将其转换为位图图像源。我就是这么做的
图像保存在某些文件夹中,例如项目根文件夹中的图像。您可以将它们保存在任何程序集中。
单个映像的生成操作属性设置为资源类型。
ViewModel将图像名称保存在字符串中,比如属性MyImageName,当绑定到XAML中图像对象的源时,我将其转换为相对路径
public class ImagePathConverter
{
public void Convert(...)
{
return "pack://application:,,,/MyApplicationName;component/Images/" + value.ToString();
}
}
其中MyApplicationName是短程序集的名称,该程序集下有Images文件夹
在XAML中,假设视图模型实例绑定到整个视图的数据上下文和/或至少绑定到图像的数据上下文
<Image Source="{Binding Path=MyImageName, Converter={StaticResource ImagePathConverter}}" />
但这是通过MVVM引用WPF项目中图像的典型方法之一。其他方法包括从resx或内容类型图像或二进制数据库加载图像的二进制流。在这种情况下,转换器会将其转换为BitMapImageSource。感谢您分享您的做法。这不是最佳做法:。我更愿意在viewmodel上创建一些表示每种图像类型的枚举,并编写用于将类型转换为图像的转换器。更多的代码,但更好的可维护性和可测试性。感谢您分享您的做法。这不是最佳做法:。我更愿意在viewmodel上创建一些表示每种图像类型的枚举,并编写用于将类型转换为图像的转换器。更多的代码,但更好的可维护性和可测试性。