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));
}
}
您好,我正在尝试进行活动倒计时,但 运行 遇到了一些问题。
此函数被调用:
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));
}
}