Сохранить и загрузить пользовательские элементы управления

Я использую 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 - Что мне нужно: когда я сохраняю диаграмму владельцем.fileManager.SaveToFile(); Я не могу найти внутри xml-файла свойство Content или любое SerializationInfo, которое означает, что ничего нельзя сериализовать! Я добавил эту строку

e.SerializationInfo["Content"] = myShape.Header;

в событии сериализации и все тот же

Мне нужно получить тот же дизайн, который сделает пользователь!

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

            shape.Content = e.SerializationInfo["DataContent"].ToString();                     shape.Content = e.SerializationInfo["Content"].ToString();

и говорит "Ссылка на объект не установлена ​​на экземпляр объекта"!

1 ответ

Я получил ответ, сериализация элемента от перетаскивания отличается от сериализации в сохранении
http://www.telerik.com/forums/save-and-load-custom-controls

Другие вопросы по тегам