Xamarin.Forms 将绑定设置为图像,以便在其源更改时刷新

Xamarin.Forms SetBinding to Image so that it refreshes when its Source changes

当我更改图像源时,我试图在我的页面更新/重新绘制图像 - 这将帮助我让它们重新异步加载。

我认为为绑定到图像的 imageSource 设置一个可绑定的 属性 是一个开始,但它并没有更新图像。我已经尝试了很多方法,包括带有 OnPropertyChanged 事件的 viewModel 方法,但我认为我不太理解这一点。

此绑定也必须在代码中完成,这就是应用程序的编写方式(最小 xaml)。

到目前为止,我的一般方法是:

可绑定属性

public static readonly BindableProperty ImageFileProperty = BindableProperty.Create("ImageProperty", typeof(string), typeof(CustomImageClass));

public string ImageProperty { get { return (string)GetValue(ImageFileProperty); } set { SetValue(ImageFileProperty, value); } }

在 CustomImageClass 构造函数内部:

this.SetBinding(ImageFileProperty, "ImageProperty");

从这里开始,我想在更新 ImageSource 时更改图像并更改图像。我希望这足够具体,我认为绑定到 xaml 的所有不同示例让我对如何在代码中执行此操作感到困惑。

Sorry the poor english

我想这里有很多问题...

如果我理解得很好,您想在 CustomImageClass 中创建一个 BindableProperty。那正确吗? 如果是,那么您可以对可绑定的 属性 名称使用默认约定,如下所示(注意我也更改了类型):

public static readonly BindableProperty ImageFileProperty =
        BindableProperty.Create("ImageFile", typeof(ImageSource), 
        typeof(CustomImageClass));

public ImageSource ImageFile
{
    get{ return (string)GetValue(ImageFileProperty); }
    set{ SetValue(ImageFileProperty, value); }
}

您不能将绑定设置到您刚刚在构造函数中创建的 属性。这将在您使用 class(在 xaml 或 c# 中)时使用。

现在您必须使用 属性 设置要显示的图像。我认为你应该在这个class中有一个变量或私有属性,它是Image类型的,例如'image',所以,在构造函数中你应该做

image = new Image();
image.BindingContext = this;
image.SetBinding(Image.Source, nameof(ImageFile));

如果我理解有误,请告诉我。 希望对你有帮助。