You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Entry文本保存到Application.Current.Properties?复用策略失效

解决Entry文本保存到Application.Current.Properties的问题

看起来你已经搭好了基础框架,但问题出在只更新了内存中的列表,却没有把修改后的列表持久化回Application.Current.Properties上。我来帮你一步步修正:

1. 完善Memory类的持久化逻辑

你的Memory类目前只实现了从Properties读取的逻辑,但没有处理写入的部分。我们需要给FavoriteNotes加上setter,在赋值时自动序列化并保存到Properties:

using Newtonsoft.Json; // 确保你引用了Newtonsoft.Json包

public static class Memory 
{ 
    public static List<Notes> FavoriteNotes 
    { 
        get 
        { 
            if (Application.Current.Properties.TryGetValue("favoritenotes", out var jsonObj) && jsonObj is string json)
            {
                return JsonConvert.DeserializeObject<List<Notes>>(json);
            }
            // 如果没有保存过数据,返回空列表避免空引用
            return new List<Notes>();
        } 
        set 
        {
            // 将列表序列化为JSON字符串
            var json = JsonConvert.SerializeObject(value);
            // 更新Properties中的值
            Application.Current.Properties["favoritenotes"] = json;
            // 异步保存到磁盘(必须调用这个才会持久化)
            _ = Application.Current.SavePropertiesAsync();
        }
    }
}

2. 修改ViewModel的Save方法

原来的代码只是获取了列表的引用并添加元素,但因为List是引用类型,修改元素不会触发FavoriteNotes的setter,所以不会触发保存逻辑。我们需要重新赋值来触发setter:

private void Save() 
{ 
    // 获取当前的收藏列表
    var currentFavorites = Memory.FavoriteNotes;
    // 添加当前绑定的Notes实例(确保Notes已经包含了Entry输入的文本)
    currentFavorites.Add(Notes);
    // 重新赋值触发setter,完成持久化
    Memory.FavoriteNotes = currentFavorites;
}

3. 额外注意事项

  • 确保Notes类是可序列化的:要么给类加上[Serializable]特性,要么保证所有需要保存的属性都是公共的读写属性(Json.NET需要访问这些属性来序列化)。
  • 如果需要处理保存失败的场景,可以把Save方法改成异步的:
    private async void Save() 
    { 
        var currentFavorites = Memory.FavoriteNotes;
        currentFavorites.Add(Notes);
        Memory.FavoriteNotes = currentFavorites;
        // 等待保存完成,可添加try-catch处理异常
        await Application.Current.SavePropertiesAsync();
    }
    

这样修改后,每次调用Save方法,Entry绑定的Notes内容就会被正确保存到Application.Current.Properties里,重启应用后也能读取到。

内容的提问来源于stack exchange,提问作者KalleP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:10:04