具有相同 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));
我在 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));