我正在尝试将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");
}
}
答案 0 :(得分:1)
BitmapImage实现了ISupportInitialize。这意味着初始化后将忽略属性更改。更改Binding的source属性无效。
您应该直接绑定Image Source
属性。内置的自动类型转换将在幕后创建一个BitmapFrame。
<Image Source="{Binding ImageURI}" .../>
在Binding上设置UpdateSourceTrigger=Explicit
和Mode=TwoWay
毫无意义。
如果需要显式创建BitmapImage(例如设置了IgnoreImageCache选项的那个),请编写适当的Binding Converter。