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

时间:2017-06-01 18:24:21

标签: image xamarin xamarin.forms imagesource

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

基本上,我连续排成5颗星,用户可以点击其中一颗星进行评分。我有两个不同的图像,一个是彩色星星,另一个是黑色星星。如果用户点击星号3,则星号1-3将变为彩色,而4-5将变为黑色。如果您选择数字1,则除第一颗星外的所有星都将为黑色,如果您选择最后一颗星,则所有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可能会出现问题,同时也是如此。

这是错误的做法吗?

2 个答案:

答案 0 :(得分:1)

我不确定,但我认为这种行为因为Bindings而变得怪异。

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

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

答案 1 :(得分:0)

您是否尝试过这样称呼它?

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