#c# #wpf #mvvm
#c# #wpf #mvvm
Вопрос:
MVVM, WPF, C#
Я делаю TraidingPlatform и использую FancyCandle.
У меня есть ObservableCollection ICandle
Теперь мне нужно сохранить и открыть мой файл. Сохранение было выполнено
public RelayCommand SaveCommand
{
get
{
return _saveCommand ??
(_saveCommand = new RelayCommand(() =>
{
var result = new List<string>();
for (int i = 0; i < ChartView.Count; i )
{
result.Add(ChartView[i].t.ToString());
result.Add(ChartView[i].L.ToString());
result.Add(ChartView[i].H.ToString());
result.Add(ChartView[i].O.ToString());
result.Add(ChartView[i].V.ToString());
result.Add(ChartView[i].C.ToString());
}
fileManager.RewriteAllLines(FilePath, result.Select(x => x.ToString()).ToList());
}));
}
}
Но теперь я не понимаю, как преобразовать из списка в ICandle
public List<string> GetManyFiles()
{
return fileManager.ReadAllLines(FilePath);
}
public RelayCommand LoadCommand
{
get
{
return _loadCommand ??
(_loadCommand = new RelayCommand(() =>
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "txt files(*.txt)|*.txt|All files(*.*)|*.*";
bool? response = openFileDialog.ShowDialog();
if (response == true)
{
var vals = GetManyFiles();
var result = new ObservableCollection<ICandle>();
for (int i = 0; i < vals.Count; i )
{
}
ChartView = resu<
}
}));
}
}
Пожалуйста, помогите мне, спасибо.
Комментарии:
1. Чтобы сохранить и восстановить объект, см. раздел сериализация.
2. Я знаю, что это можно сделать без сериализации, но я не могу догадаться, как ))
3. Вы выполняете сериализацию, просто вы не используете стандартный формат, такой как xml или json.
4. «Я знаю, что это можно сделать без сериализации, но я не могу догадаться, как ))» — Тогда у вас совершенно другая проблема. Откуда вы «знаете», что это можно сделать «без сериализации»? Почему вы «угадываете» вместо того, чтобы искать документацию?
Ответ №1:
Извините
Я был не совсем прав
Я сделал
public RelayCommand LoadCommand
{
get
{
return _loadCommand ??
(_loadCommand = new RelayCommand(() =>
{
OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Filter = "txt files(*.txt)|*.txt|All files(*.*)|*.*";
bool? response = openFileDialog.ShowDialog();
if (response == true)
{
ChartView.Clear();
//$"{item.O}|{item.H}|{item.L}|{item.C}|{item.t}|{item.V}"
var vals = GetManyFiles();
foreach(var item in vals)
{
var args = item.Split('|');
ChartView.Add(new Candle(DateTime.Parse(args[4]),
Convert.ToDouble(args[0]),
Convert.ToDouble(args[1]),
Convert.ToDouble(args[2]),
Convert.ToDouble(args[3]),
Convert.ToInt64(args[5])));
}
}
}));
}
}