Добавление выбранных элементов из списка в другой список

Я хочу добавить каждый обработанный SelectedItem из ListView A в ListView B как своего рода историю. Он работает, если я кодирую это только для одного объекта, но когда я пытаюсь добавить еще один объект в ListView B, он ничего не показывает. Я знаю, что мне нужно десериализовать это как List<obj>, но он не работает. Можете ли вы мне помочь?

Вот что я пробовал до сих пор:

// ListView A (Source)
// the ItemSelected is processed this function is called

public void AddToHistory(Object obj)
{
    string fileName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "history.txt");
    var content = JsonConvert.SerializeObject(obj);
    File.WriteAllText(fileName, content);
}

// ListView B (Destination View)
void CreateListOfObjects()
{
    ObjectList = new List<Object>();
    string fileName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "history.txt");
    var content = File.ReadAllText(fileName);
    var json = JsonConvert.DeserializeObject<Object>(content);
    ObjectList.Add(json);
}

private List<Object> _object;
public List<Object> ObjectList
{
    get => _object;
    set => SetValue(ref _object, value);
}

где Listview A и ListView B, как далеко вы продвинулись в своем коде?

DaniDev 18.12.2018 10:17

Недалеко. Вот и все. Я хочу сохранить эти объекты в локальном txt файле и использовать его как ItemsSource для ListView B

user8393563 18.12.2018 10:18

не ясно из вашего кода, где у вас возникла проблема

DaniDev 18.12.2018 10:20

Моя проблема в том, что я хочу добавить более одного объекта в LV B, и я не знаю, как это сделать.

user8393563 18.12.2018 10:21

Я не вижу списков в вашем коде?

DaniDev 18.12.2018 10:35
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
5
39
2

Ответы 2

Попробуйте использовать File.AppendAllText вместо File.WriteAllText, поскольку WriteAllText перезапишет существующий файл во время записи.

public void CreateListOfObjects()
    {
        string fileName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "history.txt");
        var content = File.ReadAllText(fileName);
        var itemList = JsonConvert.DeserializeObject<List<string>>(content);
        foreach(var item in itemList)
        {
            listView2.Items.Add(item);
        }
    }

Да, я сделал. Проблема в том, что добавленные объекты не будут разделены как массив. Я работаю над этим прямо сейчас. Один момент.

user8393563 18.12.2018 10:44

Обновите код, чтобы получить массив строк из текста и отобразить его в виде списка. надеюсь это поможет

Sharon 18.12.2018 11:21

Я наконец нашел обходной путь. Теперь я работаю со списком в первую очередь, чтобы иметь оболочку для моего массива объектов.

// ListView A (Source)
// when ItemSelected is processed this function is called

public void AddToHistory(Object obj)
{
    string fileName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "history.txt");
    var _tempList = new List<Object>();
    if (File.Exist(fileName) 
    {
        var _tempContent = File.ReadAllText(fileName);
        var json = JsonConvert.DeserializeObject<List<Object>>(tempContent);
        _tempList.AddRange(json);
        _tempList.Add(obj);
    } else 
    {
        _tempList.Add(obj);
    }
    var content = JsonConvert.SerializeObject(_tempList);
    File.WriteAllText(fileName, content);
}

// ListView B (Destination View)
void CreateListOfObjects()
{
    ObjectList = new List<Object>();
    string fileName = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "history.txt");
    var content = File.ReadAllText(fileName);
    var json = JsonConvert.DeserializeObject<List<Object>>(content);
    ObjectList.AddRange(json);
}

Другие вопросы по теме