(1) 我在使用 Akavache 时无法触发 ObservableCollection 的 CollectionChanged 事件,这是我的代码(简化)
GraphCollection = new ObservableCollection<UserData>();
_cache.GetOrFetchObject(TabType.Graph.ToString(),
async () => await _dataStore.GetAllDocuments(TabType.Graph))
.Subscribe(
GraphList =>
{
GraphCollection = new ObservableCollection<UserData>(GraphList);
//GraphCollection.Shuffle();
NoGraphItems = GraphCollection.Count == 0;
});
GraphCollection.CollectionChanged += (sender, args) =>
{
NoGraphItems = GraphCollection.Count == 0;
};
理想情况下,当我添加/删除数据时,我想触发事件来检查集合是否为空,然后分配一个 bool 属性来判断它是否为空。
我正在像这样进行简单的添加/删除,然后调用 RefreshCache 方法使数据无效并重新创建数据,不确定这是否也是最有效的方法。
var graphRecord = GraphCollection.FirstOrDefault(x => x.Id == data.Id);
GraphCollection.Remove(dreamRecord);
RefreshCache(TabType.Graphs, DreamsCollection);
private void RefreshCache(TabType tabType, ObservableCollection<UserData> collection)
{
_cache.InvalidateObject<UserData>(tabType.ToString());
_cache.InsertObject(tabType.ToString(), collection);
}
(2) 我目前没有设置 DateTime 偏移量,我需要这个吗?有人可以给我一个如何写出来的例子,文档没有明确说明这一点。
DateTimeOffset? absoluteExpiration