我一直在将图像资源集成到我的WPF程序集中很长一段时间,但我从来没有真正找到一种在我的MVVM应用程序中绑定它们的方法。
所以我想知道你们堆栈流用户是否可以在汇编资源方面分享他们自己的做法:
感谢您的帮助; - )
答案 0 :(得分:6)
这就是我做的......
Images
。您可以将它们保存在任何组件中。Build Action
属性设置为Resource
类型。 ViewModel将图片名称保存在string
(例如属性MyImageName
)中,并在绑定到Source
时将其转换为相对路径XAML中的Image
对象...
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项目中引用图像的典型方法之一。其他方式包括加载Image的二进制流(来自resx
或Content
类型的图像或来自二进制数据库)。在这种情况下,您的转换器会将其转换为BitMapImageSource
。