Я использую RadDiagram от TelerikСохранение и загрузка пользовательских элементов управления
1- Что у меня есть: я применил тот же самый пример здесь http://www.telerik.com/help/wpf/raddiagram-extensions-toolbox.html Но содержание myShape изображение (я ДНТ есть геометрия), когда я бросаю его в RadDiagram, он генерирует новый экземпляр одного из моих пользовательских классов при десериализации. Я делаю это, сериализуя заголовок, который является ключом подсказки для меня в десериализовании для создания правильного пользовательского класса для сброшенной фигуры.
Мои события:
void diagram_ShapeSerialized(object sender, SerializationEventArgs<IDiagramItem> e)
{
var shape = e.Entity as RadDiagramShape;
if (shape != null)
{
var myShape = shape.DataContext as GalleryItem;
if (myShape != null)
{
e.SerializationInfo["DataContent"] = myShape.Header;
}
}
}
private void RadDiagram_ShapeDeserialized(object sender, ShapeSerializationRoutedEventArgs e)
{
var shape = e.Shape as RadDiagramShape;
if (shape != null)
{
shape.Content = e.SerializationInfo["DataContent"].ToString();
switch (shape.Content.ToString())
{
//Charts
case "TimeChart":
shape.Content = new MyTimeChart(); break;
case "ValueChart":
shape.Content = new MyTimeValue(); break;
//...etc
}
}
}
2- Что мне нужно: Когда я сохраняю диаграмме owner.fileManager.SaveToFile(); Я не могу найти внутри xml-файла свойство Content или любое SerializationInfo, что означает, что ничто не может быть сериализовано! Я добавил эту линию
e.SerializationInfo["Content"] = myShape.Header;
в сериализации Event и все тот же
Мне нужно, чтобы получить тот же дизайн пользователь сделает!
В режиме отладки Saving не попадает в событие Serialization - это означает, что это зависит от первой сериализации! Пока он попадает в событие DeSerialization, когда я удаляю форму и когда загружаю XML. И во времени загрузки файлов всегда ломается внутри десериализации события на
shape.Content = e.SerializationInfo["DataContent"].ToString(); shape.Content = e.SerializationInfo["Content"].ToString();
и говорит: «Ссылка на объект не указывает на экземпляр объекта»!