Wpf 为什么我的ImageSource绑定没有更新?
我正在尝试将XAML中的图像源动态绑定到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
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不支持这样的基本功能。。。