Я хочу добавить каждый обработанный 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);
}
Недалеко. Вот и все. Я хочу сохранить эти объекты в локальном txt файле и использовать его как ItemsSource для ListView B
не ясно из вашего кода, где у вас возникла проблема
Моя проблема в том, что я хочу добавить более одного объекта в LV B, и я не знаю, как это сделать.
Я не вижу списков в вашем коде?
Попробуйте использовать 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);
}
}
Да, я сделал. Проблема в том, что добавленные объекты не будут разделены как массив. Я работаю над этим прямо сейчас. Один момент.
Обновите код, чтобы получить массив строк из текста и отобразить его в виде списка. надеюсь это поможет
Я наконец нашел обходной путь. Теперь я работаю со списком в первую очередь, чтобы иметь оболочку для моего массива объектов.
// 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);
}
где Listview A и ListView B, как далеко вы продвинулись в своем коде?