MAUI更新CollectionView事件倒计时



你好,我正试图进行事件倒计时,但遇到了一些问题。

此函数被调用:

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

isCounting在OnAppearing((中设置为true

然后:

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只是一个Timespan

前端的绑定进行到一半——name属性看起来很好,但倒计时字符串永远不会更新。如果我将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));
}
}

最新更新