2014-11-26 2 views
0

Я использую 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(); 

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

ответ

Смежные вопросы