Если добавить ChartActiveOrdersElement а область графика, а затем сохранить и загрузить то восстановления не происходит.
<dx:DXWindow 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:charting="http://schemas.stocksharp.com/xaml"
xmlns:dx="http://schemas.devexpress.com/winfx/2008/xaml/core"
mc:Ignorable="d"
Title="MainWindow" Height="500" Width="800">
<Grid>
<Grid.RowDefinitions>
<RowDefinition/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<charting:ChartPanel Name="ChartPanel" IsInteracted="True"/>
<Button Content="Init" Click="Init_OnClick" Grid.Row="1"></Button>
<Button Content="Clear" Click="Clear_OnClick" Grid.Row="2"></Button>
<Button Content="Load" Click="Load_OnClick" Grid.Row="3"></Button>
<Button Content="Save" Click="Save_OnClick" Grid.Row="4"></Button>
</Grid>
</dx:DXWindow>
using System.IO;
using Ecng.Serialization;
using System;
using System.Windows;
using Ecng.Collections;
using StockSharp.Xaml.Charting;
namespace Chart
{
public partial class MainWindow
{
private MyStrategy Strategy;
public MainWindow()
{
InitializeComponent();
}
private void Load_OnClick(object sender, RoutedEventArgs e)
{
if (File.Exists(AppDomain.CurrentDomain.BaseDirectory + "/SettingsStorage.xml"))
{
var settingsStorage =
new XmlSerializer<SettingsStorage>().Deserialize(
AppDomain.CurrentDomain.BaseDirectory + "/SettingsStorage.xml");
ChartPanel.Load(settingsStorage);
}
}
private void Save_OnClick(object sender, RoutedEventArgs e)
{
var settingsStorage = new SettingsStorage();
ChartPanel.Save(settingsStorage);
new XmlSerializer<SettingsStorage>().Serialize(settingsStorage, AppDomain.CurrentDomain.BaseDirectory + "/SettingsStorage.xml");
}
private void Init_OnClick(object sender, RoutedEventArgs e)
{
var area = new ChartArea();
area.Elements.AddRange(new IChartElement[]{new ChartActiveOrdersElement() { FullTitle = "ChartActiveOrdersElement" }, new ChartCandleElement(){Title = "ChartCandleElement" }, });
ChartPanel.AddArea(area);
}
private void Clear_OnClick(object sender, RoutedEventArgs e)
{
ChartPanel.ClearAreas();
}
}
}
コメント (9)
ログイン または アカウントを作成, コメントを残すにはログインまたは新規登録してください
Добрый день
Графические компоненты сохраняют только визуальные настройки. Они не сохраняют сами данные, которые передаёт в них пользовательский код.
А чем отличается ChartCandleElement от ChartActiveOrdersElement например? ChartCandleElement, так же как и ChartIndicatorElement нормально восстанавливаются.
Добрый день
Пожалуйста, возьмите ночную сборку. Сделана поддержка сохранения и восстановления ChartActiveOrdersElement
В ночной сборке элемент сохраняется и восстанавливается, но если сохранить график с активным ордером(то есть будет отрисована линия ордера), а потом загрузить то получим исключение NullReferenceException.
Добрый день
Пожалуйста, приведите код, а так же текст ошибки.
Здравствуйте. Код написан исключительно для генерации исключения: xaml:
C#
Stack Trace:
Добрый день
Ошибка исправлена. Пожалуйста, возьмите ночную сборку.
График был изменен в работе с активными заявками. Класс ChartActiveOrderInfo убран, и отрисовка заявок теперь идентична отрисовке других данных. Изменения в работе с графиком можно посмотреть в примере SampleChartActiveOrders
Ошибки нет, но изначальная проблема не решена. При вызове метода Chart.Load(SettingsStorage); ChartActiveOrdersElement не восстанавливается.
Добрый день
Пожалуйста, возьмите ночную сборку.