具有相同 imageSource 的多个图像并不总是加载 (Xamarin)

Multiple images with same imageSource does not always load (Xamarin)

我在 Xamarin.Forms 的其中一个页面中的图像有一些问题。

基本上我有5颗星排成一排,用户可以点击其中一颗星来打分。我有两张不同的图片,一张是彩色星星,另一张是黑色星星。如果用户点击 3 号星,星 1-3 将变为彩色,而 4-5 将变为黑色。如果你 select 第 1 颗星,除了第一颗星之外的所有星都是黑色的,如果你 select 最后一颗星,那么所有 5 颗星都是彩色的。

这是我的代码:

    ImageSource ratingFill = ImageSource.FromResource("MyProject.Images.starfill.png");
    ImageSource ratingNoFill = ImageSource.FromResource("MyProject.Images.starnofill.png");
    private void ClickRating(int stars)
    {
        rating = stars;
        switch (stars)
        {
            case 1:
                rating1.Source = ratingFill;
                rating2.Source = ratingNoFill;
                rating3.Source = ratingNoFill;
                rating4.Source = ratingNoFill;
                rating5.Source = ratingNoFill;
                labelRatingText.Text = "Poor";
                break;
            case 2:
                rating1.Source = ratingFill;
                rating2.Source = ratingFill;
                rating3.Source = ratingNoFill;
                ...
        }
    }

好像不是所有的5星都应该更新。他们是否加载图像有点随机。有时,如果我点击星号 4,数字 3 就会消失(就像它没有来源一样)。似乎在同一时间多次使用同一个 ImageSource 可能会出现问题。

这是错误的做法吗?

我不确定,但我认为由于绑定,这种行为变得很奇怪。

尝试将您的 rating 变量声明更改为:

ImageSource ratingNoFill => ImageSource.FromResource("MyProject.Images.starnofill.png");

你试过这样称呼它吗?

Device.BeginInvokeOnMainThread(() => ClickRating(stars));