c# - 如何从本地路径清除图像控件

标签 c# wpf

我在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/

相关文章:

c# - 制作 Selenium 无需等待元素

C# 注入(inject) : How to bind to method async

c# - 将 DataGridComboBoxColumn 值传递给 ObjectDataProvider 的 MethodParameter

c# - PromptDialog.Choice 中的重大更改?

c# - 在沙箱中运行 .Net 应用程序

c# - 使用 MVVM 模式中的 DXGrid 绑定(bind)/编辑数据的最佳选择是什么?

c# - 在 C#/WPF 中将字典绑定(bind)到 ItemsControl

wpf - 用于在列表中最后一项上触发 ItemsControl 的 ItemTemplate 的 DataTrigger

WPF:使用滚动条重新设置所有控件的样式

c# - IComparable<T>.CompareTo() 返回值?