问题似乎很简单,但我没有找到对这个问题的回答。
我的项目列表工作正常,绑定到我的MVVM。当我更新一个元素时,所有元素都很好地协调,反映了变化等等。
我的一个字段是根据当天计算的。因此,如果用户按HOME并退出应用程序,并且明天他回来,则列表不会刷新,它会显示前一天的数据。
要解决这个问题,我想在使用OnNavigatedTo
和OnNavigatedFrom
事件,在开始时保存“入口”日,并将其与OnNavigatedTo
事件中的当前日期进行比较(恢复应用程序时被激活)。检测到这一天的变化,我可以刷新清单。
问题是,我如何刷新列表?或者我可能会使事情变得复杂,并且有更好的方法来做到这一点。
编辑:最终解决方案。
对于那些需要相同功能的人,我找到了解决方案:
// Declare this var in the MainPage class
// Holds the starting app day. If when going back to this page it has changed, refresh the list
private DateTime loadDate;
// Save the current day. If when going back to here it has changed, refresh the list
protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
{
loadDate = DateTime.Today;
}
// Read the current day and compare with saved. If when going back to here it has changed, refresh the list
protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
// Read the current day and compare
if (loadDate != DateTime.Today)
{
// The day has changed. Loop the list to refresh every item
foreach (Item item in listBoxControl.Items)
{
item.CalculateMyOwnFieldNotBindedToDB();
}
}
}
答案 0 :(得分:0)
问题是如果你在List上引发属性更改而没有实际更改List,它实际上会被忽略,因为视图将检测到List对象实际上没有更改。一种解决方法可能是将List设置为null,然后将其设置回原始List 另一种解决方案是循环遍历List中的项目并在日期字段上提升属性更改,这样就不需要仅刷新整个列表的实际属性。