【发布时间】:2019-06-21 14:43:55
【问题描述】:
我在绑定列表视图中遇到问题,我遇到的问题是:
我有一个对象列表,每行都有一个递减按钮,一个数量文本和一个递增按钮。
加载此列表并单击增量按钮时,文本数量会增加 1
当我向下滚动并随机单击增量按钮时,文本数量不会增加(Binding 对象的值增加了,但 UI 没有更新),当我再次单击时,值为递增,它在屏幕上显示 2,换句话说,只是我第二次单击 UI 更新。
在我完成的一些测试中,按照我解释问题的上述主题,当我向上滚动(足以从设备屏幕隐藏有问题的行)并再次向下滚动到相同位置时,当我单击增量按钮时,会发生同样的事情,我需要单击两次,以便 UI 更新为 4。
我正在使用 Prism MVVM,下面的代码位于 ItemSource 中项目的类中。
[JsonIgnore]
private int _quantity;
[JsonIgnore]
[Ignore]
public int Quantity {
get {
return _quantity;
} set {
SetProperty(ref _quantity, value);
RaisePropertyChanged(nameof(TextQuantity));
}
}
[JsonIgnore]
[Ignore]
public string TextQuantity
{
get
{
return string.Format("Total: {0}", Quantity);
}
}
[JsonIgnore]
[Ignore]
public ICommand ClickPlus
{
get
{
return new Command(() =>
{
Quantity += 1;
});
}
}
简而言之,如果我滚动列表视图并尝试仅与一行中的 UI 交互,用户需要交互两次,因此更新了行 UI。
【问题讨论】:
-
点击 3º 时,数量值是 3 还是 2?,它是否会在同一次点击中显示在 UI 上?
-
@RicardoDiasMorais 如果我单击一次,值会更新,但在 UI 中仍然是 0,所以我需要再次单击,然后 UI 显示值 2,当我再次单击时,一切正常,除非我向上滚动并再次返回,然后第一次单击不再更新 UI =[
-
嗯,真奇怪,第一次点击时会调用 RaisePropertyChanged 吗?
-
@RicardoDiasMorais 是的,我也调试过,强制尝试捕获,但没有任何反应 =[