我在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可能会出现问题,同时也是如此。
这是错误的做法吗?
答案 0 :(得分:1)
我不确定,但我认为这种行为因为Bindings而变得怪异。
尝试将rating
变量声明更改为:
ImageSource ratingNoFill => ImageSource.FromResource("MyProject.Images.starnofill.png");
答案 1 :(得分:0)
您是否尝试过这样称呼它?
Device.BeginInvokeOnMainThread(() => ClickRating(stars));