我有一组图像,这些路径是在xaml文件中定义的,如下所示
<BitmapImage
x:Key="LoginLogo"
UriSource="pack://application:,,,/AssemblyName;component/Resources/LoginLogo.png" />
在我看来.xaml有一个图像控件,Source属性与View Model绑定。
视图模型中的属性:
private BitMapImage _imageSource
public BitmapImage ImageSource
{
get { return (_imageSource); }
set { this.SetValue(_imageSource, value); }
}
现在我需要为Image Source设置值。如何设置。
答案 0 :(得分:2)
您可以将Image控件的Source
属性绑定到视图模型属性,如下所示:
<Image Source="{Binding ImageSource}">
将视图模型属性设置为BitmapImage资源可能如下所示(例如,在MainWindow类中):
viewModel.ImageSource = (BitmapImage)Resources["LoginLogo"];
您还可以考虑将视图模型属性的类型从BitmapImage
更改为基类ImageSource
。这将为您可能分配给该属性的不同图像类型提供更大的灵活性,例如: DrawingImage
或BitmapFrame
等。
替代方案是包含图片网址的Uri
(或string
)类型的视图模型属性
private Uri imageUrl
public Uri ImageUrl
{
get { return imageUrl; }
set { SetValue(imageUrl, value); }
}
你会以同样的方式绑定它,比如<Image Source="{Binding ImageUrl}">
(从而受益于内置的自动类型转换),但可以保存BitmapImage资源并直接分配如下的属性值:
viewModel.ImageUrl =
new Uri("pack://application:,,,/AssemblyName;component/Resources/LoginLogo.png");