Save() Load()
Atom Ответить
09.10.2018


Добрый день! Что сохраняют и загружают методы Save() и Load()? Если я правильно понимаю то при вызове метода Save() сохраняется текущее состояние объекта, а при следующем создании его и вызова метода Load() восстанавливает сохраненное состояние. Например, если я создам объект график типа ChartPanel, и добавлю в него несколько областей а в области несколько элементов и вызову Save(), то при следующем создании ChartPanel и вызове Load() все созданные области и элементы подгрузятся автоматически?



Спасибо:




8 Ответов
Support

Фотография
Дата: 10.10.2018
Ответить


Добрый день

Да, области восстанавливаются при загрузке.
Спасибо:

Константин

Фотография
Благотворитель
Дата: 11.10.2018
Ответить


Не могу загрузить сохраненные настройки и восстановить все добавленные элементы. Файл с настройками создается и загружается в SettingsStorage, но график не восстанавливает прежнее состояние.
Код такой:
Xaml:
Код
<Window x:Class="Chart.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Chart"
xmlns:charting="http://schemas.stocksharp.com/xaml"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<charting:ChartPanel Name="ChartPanel"/>
</Grid>
</Window>

С#:
Код
public partial class MainWindow : Window
{
private SettingsStorage SettingsStorage { get; set; }
public MainWindow()
{
InitializeComponent();
if (File.Exists("Setting.xml"))
{
//Загружаем настройки
SettingsStorage = new XmlSerializer<SettingsStorage>().Deserialize("Setting.xml");
ChartPanel.Load(SettingsStorage);
return;
}
SettingsStorage = new SettingsStorage();

//Создаем область и элемент
var area = new ChartArea();
area.Elements.Add(new ChartCandleElement());
ChartPanel.Areas.Add(area);
}

protected override void OnClosing(CancelEventArgs e)
{
//Сохраняем настройки и закрываем приложение
ChartPanel.Save(SettingsStorage);
new XmlSerializer<SettingsStorage>().Serialize(SettingsStorage, "Setting.xml");
base.OnClosing(e);
}
}

Что я делаю не так?
Автор топика
Спасибо:

Support

Фотография
Дата: 17.10.2018
Ответить


Добрый день

Мы протестировали ваш код на примере SampleChart и он восстанавливает состояние. Что именно у вас не появляется при загрузке настроек из файла?
Спасибо:

Константин

Фотография
Благотворитель
Дата: 17.10.2018
Ответить


При загрузке настроек из файла ChartPanel.Load(SettingsStorage) не создается ChartArea и вложенный ChartCandleElement. Может я не правильно понимаю логику метода Load().
Он должен создавать области и элементы на графике самостоятельно?
Вот так:
Код

var area = new ChartArea();
area.Elements.Add(new ChartCandleElement());
ChartPanel.Areas.Add(area);
Автор топика
Спасибо:

Support

Фотография
Дата: 18.10.2018
Ответить


Добрый день

Да должен. В примере SampleChart создаются области и элементы.
Спасибо:

Константин

Фотография
Благотворитель
Дата: 18.10.2018
Ответить


Я смотрел пример SampleChart и не нашел вызова методов Chart.Load() и Chart.Save(). Инициализация чарта происходит в методе RefreshCharts который вызывается по событию MainWindow.Load и по событию клика по кнопке. Представленный выше код проверил на 4.4.14
Автор топика
Спасибо:

Support

Фотография
Дата: 19.10.2018
Ответить


Добрый день

Мы вставили ваш код в пример и состояние восстанавливалось после перезагрузки.
Спасибо: Константин

Support

Фотография
Дата: 24.10.2018
Ответить


Добрый день

К предыдущему сообщению добавлен изменённый файл примера с вашим кодом. После добавления дополнительных областей перезапустите программу и получите восстановленный при повторном запуске график с несколькими областями.
Спасибо: Константин


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy