OnPropertyChanged 不会触发仅 getter 属性的 getter

问题描述 投票:0回答:1

我的目标是触发领域对象(Group)的字符串属性(TotalPrice)的GUI更改,该属性只有一个getter,其演算涉及相关领域对象的属性。

以下是预期机制的一些相关要素:

  • 我更改了 ContentPage 中领域对象(关联)的属性(数量);数量由输入组件中的数据绑定绑定。

<---

  • 由于预计不会保存我的 TotalPrice,因此我向 TotalPrice 添加了领域注释 [Ignored],出于测试目的,我从 ContentPage 触发一个命令,在其中调用 OnPropertyChanged("TotalPrice")

这是总价:

[Ignored]
public string TotalPrice
{
    get
    {
        if (Associations.Count == 0
            || Associations.Any(asso => asso.ProductPricing is null))
            return null;
        var total = Associations.Sum(asso =>
            asso.ProductPricing!.IsPriced 
                ? asso.ProductPricing.UnitPrice * asso.Quantity <--
                : 0.0);
        return total.ToString("C", CultureInfo.GetCultureInfo("fr-FR"));
    }
}
  • 触发PropertyChanged的代码:

在视图模型中:

[RelayCommand]
public async Task RemoveAssociationFromGroup()
{
    SelectedGroup.ZePropertyChanged("TotalPrice");
}

在 Group 类中调用:

public void ZePropertyChanged(string name)
{
    OnPropertyChanged(name);
}

实际行为: ZePropertyChanged 被调用,但 getter 没有被调用,因此 UI 没有刷新。如果我退出并再次进入该页面,则会显示正确的 TotalPrice。

我可以向 ViewModel 添加 ObservableProperty,并手动计算 TotalPrice,但我不能让这样的错误持续存在。

我无法在 RealmObject 中使用 ObservableProperties,因为它是已经实现 INotifyPropertyChanged 的 RealmObject。

SelectedGroup 确实在属性(关联)中包含数量已更改的关联。

谢谢你

android .net data-binding realm maui
1个回答
0
投票

OnPropertyChanged
是 Realm 调用的方法,用于通知您属性已更改 - 调用它不会引发事件。相反,您应该在模型中使用
RaisePropertyChanged

public void ZePropertyChanged(string name)
{
    RaisePropertyChanged(name);
}
© www.soinside.com 2019 - 2024. All rights reserved.