Не загружаются сохранённые настройки PortfolioGrid из xml

Не загружаются сохранённые настройки PortfolioGrid из xml
Atom
13.04.2020
Дмитрий_


Здравствуйте.

Имею контрол <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(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().Deserialize($@"/")); Save(new XmlSerializer().Deserialize($@"/"));

C _testPortfolios всё работает С PortfolioGrid и вариант с PortfolioGrid.Load(storage); не срабатывает

Файл сохранённых настроек historyEmulationConnectorSettings.xml


Теги:


Спасибо:


1 2  >
Support

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


Добрый день

Какая-то ошибка или настройки не восстанавливаются?

Спасибо:

Дмитрий_

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


Ошибки нет, не восстанавливаются настройки.

Спасибо:

Support

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


Модифицированный пример работает. Кнопка Save после получения портфелей. Кнопка Load после изменения порядка колонок, ширина и т.д. Состояние восстанавливается.

<Grid>
		<Grid.RowDefinitions>
			<RowDefinition Height="*" />
			<RowDefinition Height="Auto" />
		</Grid.RowDefinitions>
		
		<xaml:PortfolioGrid x:Name="PortfolioGrid" x:FieldModifier="public" />
	<StackPanel Grid.Row="1" Orientation="Horizontal">
		<Button x:Name="Save" Click="Save_Click" Content="Save"/>
		<Button x:Name="Load" Click="Load_Click" Content="Load"/>	
	</StackPanel>
	</Grid>

private SettingsStorage _s;

		private void Save_Click(object sender, System.Windows.RoutedEventArgs e)
		{
			_s = PortfolioGrid.Save();
		}

		private void Load_Click(object sender, System.Windows.RoutedEventArgs e)
		{
			PortfolioGrid.Load(_s);
		}
Спасибо:

Дмитрий_

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


Не работает.

В демонстрационных целях создал мини-проект, в котором при открытии дочернего окна загружаются настройки PortfolioGrid, при добавлении портфеля в PortfolioGrid - сохраняются настройки.

PortfolioGridLoader.zip

Спасибо:

Support

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


Добрый день

Попробуйте наш пример с последним API и модификацией выше. Работает ли у вас данный код?

Спасибо:

Дмитрий_

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


Добрый день.

Тестировал с package id="StockSharp" version="4.4.16", если я правильно понимаю, то это последний API. Всё равно не работает.

Возможно важно указать в описании, что я добавляю не реальный портфель, а тестовый.

Переделал проект под ваш пример и добавил две кнопки:

  • Add (добавляет портфель)
var newPortfolio = new Portfolio() { Name = "Test_" + _portfolioNumber++, BeginValue = 1000000 }; _pList.Add(newPortfolio); PortfolioGrid.Portfolios.Add(newPortfolio);
  • Remove (удаляет портфель)
PortfolioGrid.Portfolios.Remove(_pList.First()); _pList.Remove(_pList.First());

Совершаю следующие действия: Add, Add (два портфеля) Save, Remove, Remove (пустой PortfolioGrid) Load (пустой PortfolioGrid) - не загружает то состояние, когда в PortfolioGrid было два портфеля.

PortfolioGridLoader.zip

Спасибо:

Support

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


Последняя версия 5.0

Спасибо:

Дмитрий_

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


Не работает. Установил version="5.0.4" targetFramework="net48" packages.config

packages.config 6 KB (811)
Спасибо:

Support

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


Вы пробовали наш пример с модификацией выше?

Спасибо:

Иван З.

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


Дмитрий Антипов: Добрый день.

Тестировал с package id="StockSharp" version="4.4.16", если я правильно понимаю, то это последний API. Всё равно не работает.

Возможно важно указать в описании, что я добавляю не реальный портфель, а тестовый.

Переделал проект под ваш пример и добавил две кнопки:

  • Add (добавляет портфель)

var newPortfolio = new Portfolio() { Name = "Test_" + _portfolioNumber++, BeginValue = 1000000 };

        _pList.Add(newPortfolio);
        PortfolioGrid.Portfolios.Add(newPortfolio);
  • Remove (удаляет портфель)

PortfolioGrid.Portfolios.Remove(_pList.First());

        _pList.Remove(_pList.First());

Совершаю следующие действия: Add, Add (два портфеля) Save, Remove, Remove (пустой PortfolioGrid) Load (пустой PortfolioGrid) - не загружает то состояние, когда в PortfolioGrid было два портфеля.

PortfolioGridLoader.zip Попробуйте декомпилировать PortfolioGrid и поймете, что он не сохраняет портфели. И наверное не должен графический элемент за это отвечать.

Спасибо:
1 2  >

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

loading
clippy