为什么我的ImageSource绑定没有更新?

时间:2018-01-31 21:03:37

标签: wpf image xaml mvvm

我正在尝试将XAML中的图像源动态绑定到ViewModel(MVVM)中的URI。这适用于初始URI,显示图片“C:\ tmp \ Test.png”。但是,如果我在ImageURI中将另一个URI设置为ViewModel,则图片不会更新。任何人都可以帮助我吗?

XAML:

<Image x:Name="UserImage" Stretch="Fill" Grid.Row="0">
    <Image.Source>
        <BitmapImage CreateOptions="IgnoreImageCache" UriSource="{Binding ImageURI, UpdateSourceTrigger=Explicit, Mode=TwoWay}"/>
    </Image.Source>
</Image>

视图模型:

public string imageURI = "C:\\tmp\\Test.png";
public string ImageURI
{
    get
    {
        return imageURI;
    }
    set
    {
        imageURI = value;
        this.OnPropertyChanged("ImageURI");
    }
}

1 个答案:

答案 0 :(得分:1)

BitmapImage实现了ISupportInitialize。这意味着初始化后将忽略属性更改。更改Binding的source属性无效。

您应该直接绑定Image Source属性。内置的自动类型转换将在幕后创建一个BitmapFrame。

<Image Source="{Binding ImageURI}" .../>

在Binding上设置UpdateSourceTrigger=ExplicitMode=TwoWay毫无意义。

如果需要显式创建BitmapImage(例如设置了IgnoreImageCache选项的那个),请编写适当的Binding Converter。