MAUI 更新 CollectionView 事件倒计时

MAUI Updating CollectionView event countdown

您好,我正在尝试进行活动倒计时,但 运行 遇到了一些问题。

此函数被调用:

private void RunEventCountdowns()
            {
                    Device.StartTimer(new TimeSpan(0, 0, 1), () =>
                    {
                        if (isCounting)
                        {
                        Device.BeginInvokeOnMainThread(() =>
                        {
                            OnPropertyChanged("propChanged");
                        });
                        return true;
                    }
                    else
                    {
                        return false;
                    }
                    });
            }

isCounting 在 OnAppearing() 中设置为真

然后:

public event PropertyChangedEventHandler propChanged;

        private void OnPropertyChanged(string propertyName)
        {
            PropertyChangedEventHandler handler = propChanged;
            foreach (var evt in EventList)
            {
                tSpan = evt.Date - DateTime.Now;
                evt.Time = tSpan;
                System.Diagnostics.Debug.WriteLine(evt.Name + " is this far away: " + evt.Time.ToString());
            }
        }

Tspan 只是一个时间跨度

前端的绑定中途工作 - 名称 属性 看起来不错,但倒计时字符串永远不会更新。如果我将 itemsource 设置为 null 然后将其更改回我的 observablecollection 源,它会更新..但是我的内存不断增加,并且似乎不是执行此操作的正确方法。

我的调试几乎显示了我想在前端看到的信息。 我在这里做错了什么?

在第一条评论的帮助下,我通过在我的模型上添加一个带有 PropertyChanged 的​​ setter 来解决这个问题。

public TimeSpan Time { get { return time; } set { time = value; OnPropertyChanged("Time"); } }

以及以下事件:

public event PropertyChangedEventHandler PropertyChanged;

  private void OnPropertyChanged(string propertyName)
    {
        if(PropertyChanged != null)
        {
            PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
        }
    }