Здравствуйте.
Имею контрол <xaml:PortfolioGrid x:Name="PortfolioGrid" />
Методы Save и Load
public void Load(SettingsStorage storage) { if (storage != null) { if (storage.Contains(nameof(_testPortfolios))) if (storage.Contains(nameof(PortfolioGrid))) { PortfolioGrid.Load(storage.GetValue<SettingsStorage>(nameof(PortfolioGrid))); } } else { // TODO: add log } }
public void Save(SettingsStorage storage)
{
if (storage != null)
{
storage.SetValue(nameof(_testPortfolios), _testPortfolios);
storage.SetValue(nameof(PortfolioGrid), PortfolioGrid.Save());
new XmlSerializer<SettingsStorage>().Serialize(storage, $@"{_SETTINGS_DIR}/{_SETTINGS_FILE}");
}
else
{
// TODO: add log
}
}
Реализация методов Load(new XmlSerializer<SettingsStorage>().Deserialize($@"/")); Save(new XmlSerializer<SettingsStorage>().Deserialize($@"/"));
C _testPortfolios всё работает С PortfolioGrid и вариант с PortfolioGrid.Load(storage); не срабатывает
Файл сохранённых настроек historyEmulationConnectorSettings.xml
Comments (12)
Login or Create account, Log in or register to leave a comment
Добрый день
Какая-то ошибка или настройки не восстанавливаются?
Ошибки нет, не восстанавливаются настройки.
Модифицированный пример работает. Кнопка Save после получения портфелей. Кнопка Load после изменения порядка колонок, ширина и т.д. Состояние восстанавливается.
Не работает.
В демонстрационных целях создал мини-проект, в котором при открытии дочернего окна загружаются настройки PortfolioGrid, при добавлении портфеля в PortfolioGrid - сохраняются настройки.
PortfolioGridLoader.zip
Добрый день
Попробуйте наш пример с последним API и модификацией выше. Работает ли у вас данный код?
Добрый день.
Тестировал с package id="StockSharp" version="4.4.16", если я правильно понимаю, то это последний API. Всё равно не работает.
Возможно важно указать в описании, что я добавляю не реальный портфель, а тестовый.
Переделал проект под ваш пример и добавил две кнопки:
var newPortfolio = new Portfolio() { Name = "Test_" + _portfolioNumber++, BeginValue = 1000000 }; _pList.Add(newPortfolio); PortfolioGrid.Portfolios.Add(newPortfolio);
PortfolioGrid.Portfolios.Remove(_pList.First()); _pList.Remove(_pList.First());
Совершаю следующие действия: Add, Add (два портфеля) Save, Remove, Remove (пустой PortfolioGrid) Load (пустой PortfolioGrid) - не загружает то состояние, когда в PortfolioGrid было два портфеля.
PortfolioGridLoader.zip
var newPortfolio = new Portfolio() { Name = "Test_" + _portfolioNumber++, BeginValue = 1000000 };
PortfolioGrid.Portfolios.Remove(_pList.First());
Спасибо за вариант. Данный вопросом я хочу найти ответ на смежные вопросы. Например в Shell в файле PortfolioGridControl используются методы PortfolioGrid.Load(storage); PortfolioGrid.Save(storage); и они работают.
Последняя версия 5.0
Не работает. Установил version="5.0.4" targetFramework="net48" packages.config
Вы пробовали наш пример с модификацией выше?