更新文件集合

时间:2016-10-12 17:56:39

标签: c#

我想知道在删除List的记录后,我可以更新文件集

private ObservableCollection<ProfileModel> _profileItems = null;
public ObservableCollection<ProfileModel> ProfileItems

模型视图:

private void ProfileModel_DeleteItemEvent(ProfileModel profileModel)
{
    ProfileItems.Remove(profileModel);

    if (!ProfileItems.Any())
    {
        ShowLoginForm = true;
        ShowProfileItems = false;
    }
    //here wants to insert code
} 

MENAGER:

private void SaveProfile()   
{
    if (ProfileItems == null) ProfileItems = new List<ProfileModel>();
    if(!ProfileItems.Contains(CurrentUser)) ProfileItems.Add(CurrentUser);

    var list = Newtonsoft.Json.JsonConvert.SerializeObject(ProfileItems);
    FileManagerInstance.WriteTextToFile(FileManager.FileType.ProfileList, list);
}

public async Task<bool> SetProfileList()
{
    var content = await FileManagerInstance.ReadFile(FileManager.FileType.ProfileList);

    if(string.IsNullOrEmpty(content))
    {
        ProfileItems = new List<ProfileModel>();
        return false;
    }
    try 
    {
        ProfileItems = Newtonsoft.Json.JsonConvert.DeserializeObject<List<ProfileModel>>(content);
    } 
    catch(Newtonsoft.Json.JsonException ex)
    {
        _log.MessageInDebug("Result content is bad!");

        if (Debugger.IsAttached) 
        {
            throw ex;
        }
    }
    return ProfileItems != null && ProfileItems.Any();
}

1 个答案:

答案 0 :(得分:0)

您需要为可观察集合添加事件侦听器,如下所示:

   ObservableCollection<ProfileModel> myObservable = new ObservableCollection<ProfileModel>();
            myObservable.CollectionChanged += (sender, e) =>
            {
                if (e.Action == System.Collections.Specialized.NotifyCollectionChangedAction.Remove)
                {
                    // do stuff
                }
            };