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

Wpf 为什么我的ImageSource绑定没有更新?,wpf,image,xaml,mvvm,Wpf,Image,Xaml,Mvvm,我正在尝试将XAML中的图像源动态绑定到ViewModel(MVVM)中的URI。这对于初始URI很好,显示了图片“C:\tmp\Test.png”。但是如果我在ViewModel中将另一个URI设置为ImageURI,则图片不会更新。有人能帮我吗 XAML: <Image x:Name="UserImage" Stretch="Fill" Grid.Row="0"> <Image.Source> <BitmapImage CreateOpt

我正在尝试将XAML中的图像源动态绑定到
ViewModel
(MVVM)中的URI。这对于初始URI很好,显示了图片“C:\tmp\Test.png”。但是如果我在
ViewModel
中将另一个URI设置为
ImageURI
,则图片不会更新。有人能帮我吗

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>

BitmapImage实现ISupportInitialize。这意味着初始化后将忽略属性更改。更改绑定的源属性无效

您应该直接绑定图像的
源属性。内置的自动类型转换将在后台创建位图帧

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

在绑定上设置
UpdateSourceTrigger=Explicit
Mode=TwoWay
是毫无意义的


如果需要显式创建位图图像(例如设置了IgnoreImageCache选项的位图图像),请编写适当的绑定转换器。

位图图像实现ISupportInitialize。这意味着初始化后将忽略属性更改。更改绑定的源属性无效

您应该直接绑定图像的
源属性。内置的自动类型转换将在后台创建位图帧

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

在绑定上设置
UpdateSourceTrigger=Explicit
Mode=TwoWay
是毫无意义的


如果需要显式创建位图图像(例如设置了IgnoreMageCache选项的位图图像),请编写适当的绑定转换器。

谢谢!但不幸的是,一切都没有改变。图像在程序启动时加载一次,但在此之后,图像保持原样。当我调试时,我可以看到OnPropertyChanged的处理程序为null:protectedvoid OnPropertyChanged(字符串名称){PropertyChangedEventHandler=PropertyChanged;if(handler!=null){handler(this,new PropertyChangedEventArgs(name));}问题可能是什么?您可能忘记了ViewModel类声明中的INotifyPropertyChanged接口了吗?没有。我的ViewModel中的其他绑定工作正常。当我设置映像时,源代码中的更新工作正常。但我不想打破MVVM模式。新的ImageURI是另一条绝对路径?是的,它是。嗯?在网上找不到工作代码。真不敢相信WPF不支持这样的基本功能…谢谢!但不幸的是,一切都没有改变。图像在程序启动时加载一次,但在此之后,图像保持原样。当我调试时,我可以看到OnPropertyChanged的处理程序为null:protectedvoid OnPropertyChanged(字符串名称){PropertyChangedEventHandler=PropertyChanged;if(handler!=null){handler(this,new PropertyChangedEventArgs(name));}问题可能是什么?您可能忘记了ViewModel类声明中的INotifyPropertyChanged接口了吗?没有。我的ViewModel中的其他绑定工作正常。当我设置映像时,源代码中的更新工作正常。但我不想打破MVVM模式。新的ImageURI是另一条绝对路径?是的,它是。嗯?在网上找不到工作代码。真不敢相信WPF不支持这样的基本功能。。。