1

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

我认为将 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 的所有不同示例都让我感到困惑,我需要如何在代码中执行它。

4

1 回答 1

0

对不起可怜的英语

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

如果我理解得很好,您想在您的 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); }
}

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

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

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

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

于 2017-06-02T10:38:17.350 回答