Форум программистов, компьютерный форум, киберфорум
Наши страницы

C#: WPF, UWP и Silverlight

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.80
nicolas2008
207 / 197 / 38
Регистрация: 30.04.2009
Сообщений: 571
Завершенные тесты: 1
#1

Сериализация... - C# WPF

15.04.2011, 19:40. Просмотров 1332. Ответов 5
Метки нет (Все метки)

Пишу прогу на wpf c использованием паттерна MVVM и библиотеки упрощающей это дело
C#
1
GalaSoft.MvvmLight
Во ViewModel находится вложенная модель, свойства которой используются в биндинге.
Бывает необходимо вызывать метод
C#
1
RaisePropertyChanged("InnerModel")
.
После некоторых манипуляцый в интерфейсе мне нужно эту вложеную модель сериализовать.

Проблема заключается в том, что после вызова метода RaisePropertyChanged("InnerModel") к обьекту каким то образом прикручивается
C#
1
PropertyChangedEventHandler
, и бинарный сериализатор ругается что этот тип несериализуемый.

Если не вызывать
C#
1
RaisePropertyChanged("InnerModel")
то все ОК.
Помогите решить проблему, плиз.

Может как то можно пометить только те свойтсва, которые нужно сериализовать + все свойства сериализуемых свойств.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.04.2011, 19:40
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Сериализация... (C# WPF):

Сериализация в Silverlight - C# WPF
Здравствуйте, столкнулся с необходимостью сериализации объектов (классы имеют вложеные классы). Нашел как проиходит xml...

Сериализация и поток - C# WPF
Пишу курсач на WPF. Приложение с прыгающим текстом. При нажатии на форму текст должен переставать/начинать прыгать. Также нужно реализовать...

Сериализация класса - C# WPF
Есть клас которий нада сериализовать, пишу такой код на кнопке и не получаеться, помогите пожалуста public class SketchAdd :...

Сериализация BitmapImage в XML - C# WPF
class X { .... public BitmapImage Picture{set;get;} .... } как сериализовать это свойство вместе с классом в XML?В даное...

XAML сериализация и наследование - C# WPF
Всем респект. Есть такая небольшая проблема с наследованием объектов и сериализацией. Вот пример исходного кода: Есть некоторый...

Сериализация данных календаря - C# WPF
Добрый день! Пишу элементарный органайзер на WPF .Хочу сделать так, чтобы при нажатии на любую дату в Календаре, справа появлялся...

5
kenny69
burning1ife
1370 / 1197 / 171
Регистрация: 21.09.2008
Сообщений: 3,356
Записей в блоге: 9
16.04.2011, 12:53 #2
ты просто пометь PropertyChangedEventHandler аттрибутом [NonSerializable]
0
nicolas2008
207 / 197 / 38
Регистрация: 30.04.2009
Сообщений: 571
Завершенные тесты: 1
17.04.2011, 12:21  [ТС] #3
Цитата Сообщение от kenny69 Посмотреть сообщение
ты просто пометь PropertyChangedEventHandler аттрибутом [NonSerializable]
Нету в модели такого свойства, его каким то образом докручивает метод RaisePropertyChanged.
Перед вызовом этого метода все норм сериализуется.
0
Sayrus89
31 / 31 / 1
Регистрация: 26.10.2009
Сообщений: 98
19.04.2011, 22:13 #4
В модели есть такое свойство, так как базовый класс реализует интерфейс INotofyPropertyChanged. Как вариант, Вы можете заново пронаследовать этот интерфейс, перекрыть это свойство и использовать Xml сериализацию, пометив это свойство атрибутом - XmlIngnore - http://msdn.microsoft.com/ru-ru/libr...attribute.aspx .
Либо же можно пронаследовать IXmlSerializable или ISerializable и имплементировать методы сериализации и десириализации с своей логикой.
Об этом и о многом другом на msdn - http://msdn.microsoft.com/ru-ru/library/7ay27kt9.aspx
0
kenny69
burning1ife
1370 / 1197 / 171
Регистрация: 21.09.2008
Сообщений: 3,356
Записей в блоге: 9
19.04.2011, 23:26 #5
т.к. ты реализуешь интерфейс INotofyPropertyChanged, то PropertyChangedEventHandler должен быть в твоем классе.
0
nicolas2008
207 / 197 / 38
Регистрация: 30.04.2009
Сообщений: 571
Завершенные тесты: 1
20.04.2011, 20:53  [ТС] #6
обьясню подробнее...

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
public class MyViewModel: ViewModelBase //ViewModelBase описан где то в Galasoft.MvvmLight
{
      public DataModel Data {get;set;} //это свойство мне нужно сериализовать
      
      public void SerializeBeforeRaisePropertyChanged()
      {
          var ms = new MemoryStream();
          var bf = new BinaryFormatter();
          bf.Serialize(ms,Data);
        //success
      }
      
 
      public void SerializeAfterRaisePropertyChanged()
      {
          RaisePropertyChanged("Data");
          var ms = new MemoryStream();
          var bf = new BinaryFormatter();
          bf.Serialize(ms,Data);
          //fail
          //тип PropertyChangedEventManager из сборки WindowsBase не помечен как сериализуемый
      }
 
}
 
[Serializable]
public class DataModel
{
      public string Property1 {get;set;}
      public int Property2 {get;set;}
      // и т.д.
}
То есть я нигде не обьявляю свойство типа PropertyChangedEventManager.
Оно странным образом добавляется в функции RaisePropertyChanged.
0
20.04.2011, 20:53
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
20.04.2011, 20:53
Привет! Вот еще темы с ответами:

Сериализация xaml wpf пример - C# WPF
Подскажите пожалуйста как сохранить ListBox который создан в XAML а потом из него запустить сохраненные данные. Получается в listBox...

.NET 4.x Сериализация данных (произвольно нарисованных линий) - C# WPF
Доброго времени суток ! Есть код,который рисует линию(произвольную) .Как вывести данные о том,что нарисовалось в ввиде XML ? ...

Сериализация ObservableCollection в xml в Universal App Win 10 - C# WPF
Здравствуйте, не могу решить проблему при сериализации, выводится ошибка - "System.UnauthorizedAccessException public sealed partial...

Бинарная сериализация ObservableCollection и передача через сеть - C# WPF
Всем привет. есть маленькая проблем ка. есть класс Код C# public class PLayer { public String Name{get;set;} public TimeSpan...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru