我在wpf中有这样一个图像控件
<Image x:Name="Img" Source="{Binding IsAsync=True}" />
我通过从这样的 url 获取来设置图像
Img.DataContext = ImageUrl;
它显示正常,当我想清除它时,我只需使用
Img.DataContext=null;
对于同一个控件,我还有一个浏览按钮,可以像这样从本地路径中选择图像
BitmapImage image = new BitmapImage(new Uri(path));
Img.Source=image;
现在我也想清除它,所以我这样做
Img.Source=null;
之后控件将不会显示来自 url 的图像,只能打开本地镜像
编辑:可能我需要在将 source 设置为 null 后再次设置绑定(bind),不知道该怎么做
最佳答案
您正在可怕地滥用绑定(bind)。请停止。
<Image x:Name="Img" Source="{Binding IsAsync=True}" />
说“绑定(bind)到数据上下文”,这并不是那么好。绑定(bind)到 View 模型的属性,例如:
<Image x:Name="Img" Source="{Binding Path=ImageLocation, IsAsync=True}" />
然后只能使用ImageLocation
更改图像。至少,只通过 DataContext
设置它。
一旦将源设置为绑定(bind),您就应该永远通过代码隐藏更改它。 期间。这样做,您的问题就会“神奇地”消失,因为您现在正在以正确的方式解决问题。
关于c# - 如何从本地路径清除图像控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28907239/