如何从WPF绑定图像

时间:2017-04-28 08:56:46

标签: wpf mvvm

我有一组图像,这些路径是在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设置值。如何设置。

1 个答案:

答案 0 :(得分:2)

您可以将Image控件的Source属性绑定到视图模型属性,如下所示:

<Image Source="{Binding ImageSource}">

将视图模型属性设置为BitmapImage资源可能如下所示(例如,在MainWindow类中):

viewModel.ImageSource = (BitmapImage)Resources["LoginLogo"];

您还可以考虑将视图模型属性的类型从BitmapImage更改为基类ImageSource。这将为您可能分配给该属性的不同图像类型提供更大的灵活性,例如: DrawingImageBitmapFrame等。

替代方案是包含图片网址的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");