我在wpf中有像这样的图像控件
<Image x:Name="Img" Source="{Binding IsAsync=True}" />
我通过从这样的网址中提取来设置图像
Img.DataContext = ImageUrl;
它显示正常,当我想清除它时我只是使用
Img.DataContext=null;
对于同一个控件我也有一个浏览按钮,从本地路径中选择图像
BitmapImage image = new BitmapImage(new Uri(path));
Img.Source=image;
现在我想清楚这一点,所以
Img.Source=null;
之后,控件不会显示来自url的图像,只能打开本地图像
编辑:可能我需要在将source设为null后再次设置绑定,不知道该怎么做
答案 0 :(得分:1)
你正在滥用绑定可怕的。请停止。
<Image x:Name="Img" Source="{Binding IsAsync=True}" />
说“绑定到数据上下文”,这并不是那么好。绑定到视图模型的属性,例如:
<Image x:Name="Img" Source="{Binding Path=ImageLocation, IsAsync=True}" />
然后只能使用ImageLocation
更改图片。至少,只能通过DataContext
设置它。
将源设置为绑定后,永远不会通过代码隐藏来更改它。的期间即可。这样做,你的问题将“神奇地”消失,因为你正在以正确的方式做到这一点。
答案 1 :(得分:0)
要清除图像控件,请清除图像URL。
e.g imgControlName.ImageUrl = "";