Сериализация диаграммы OxyPlot в XAML - PullRequest
0 голосов
/ 18 ноября 2018

Я сгенерировал PageBuilder различные UI-модели (TextBlocks, Images) для создания XAMLLayout. Для этого я поместил все свои элементы на холст и сохранил весь холст в Xaml-файле (с помощью метода XamlWriter.Save).

Теперь мне нужно сгенерировать диаграммы и сериализовать их. С OxyPlot-Library я использовал этот код для генерации кода во время выполнения.

OxyPlot.Wpf.PlotView pv = new OxyPlot.Wpf.PlotView();
OxyPlot.PlotModel pm = new OxyPlot.PlotModel();

pv.Height = 300;
pv.Width = 500;
pv.Background = Brushes.Red;
pm.Title = "Test";
pm.Series.Add(new OxyPlot.Series.FunctionSeries(Math.Cos, 0, 10, 0.1, "cos(x)"));
pv.Model = pm;

canvas.Children.Add(pv);

Для сериализации я просто вызываю свой Canvas и сериализую целые объекты следующим образом:

XamlWriter.Save(canvas);

Во время этого процесса я получил исключение:

System.InvalidOperationException: «Универсальный тип« System.Collections.Generic.List`1 [OxyPlot.OxyColor] »не может быть сериализован."

1 Ответ

0 голосов
/ 18 ноября 2018

На данный момент универсальный тип имеет очень ограниченную поддержку в xaml.

XamlWriter не может сериализовать свойство универсального типа списка.Чтобы устранить проблему, попробуйте следующий обходной путь.

public class OxyPlot
{
    public OxyColors OxyColor { get; set; }
}

public class OxyColors : List<OxyColor>
{

}

public class OxyColor
{

}
...