Save() Load()
Atom Reply
10/9/2018


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



Thanks:




8 Answers
Support

Avatar
Date: 10/10/2018
Reply


Добрый день

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

Константин

Avatar
Training Donator
Date: 10/11/2018
Reply


Не могу загрузить сохраненные настройки и восстановить все добавленные элементы. Файл с настройками создается и загружается в 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);
}
}

Что я делаю не так?
Topic starter
Thanks:

Support

Avatar
Date: 10/17/2018
Reply


Добрый день

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

Константин

Avatar
Training Donator
Date: 10/17/2018
Reply


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

var area = new ChartArea();
area.Elements.Add(new ChartCandleElement());
ChartPanel.Areas.Add(area);
Topic starter
Thanks:

Support

Avatar
Date: 10/18/2018
Reply


Добрый день

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

Константин

Avatar
Training Donator
Date: 10/18/2018
Reply


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

Support

Avatar
Date: 10/19/2018
Reply


Добрый день

Мы вставили ваш код в пример и состояние восстанавливалось после перезагрузки.
MainWindow.xaml.cs 18.8KB (1)
Thanks: Константин

Support

Avatar
Date: 10/24/2018
Reply


Добрый день

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


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy