Свойство зависимости с моим внешним хранилищем данных - PullRequest
0 голосов
/ 26 июля 2011

Я хочу добавить свойство в свой пользовательский элемент управления. Если я правильно понимаю, он должен быть объявлен как свойство зависимости, когда я хочу разрешить привязку данных к нему. Свойство Dependency хранит свое значение в поле данных, скрытом где-то в системе Silverlight. Но мне нужно, чтобы данные были сохранены в формате, отличном от типа свойства, и здесь проблема. Можно ли объявить свойство зависимости, но использовать его собственное хранилище данных для его значения?

Я спрашиваю об этом по причине. Я хочу разрешить импортировать и экспортировать данные в строке XML, но внутренне хранить их в наборе объектов и иметь возможность перемещать эти объекты. Поэтому я хочу иметь свойство string, и мне нужно взять строку xml и преобразовать ее в другой внутренний формат данных, а затем экспортировать его обратно в строку при сохранении обратно в базу данных.

Текущая версия является стандартным свойством. Это связано с парой методов конвертации:

public string XmlData {
  get { return ExportToXML(); }
  set { ImportFromXML(value); }
}

Как преобразовать этот код в свойство зависимости (чтобы разрешить привязку данных)?

Обновление:

AKAIF Легко реализовать сеттер с помощью обратного вызова свойства зависимостей. Но обратного вызова для геттера не поддерживается.

Ответы [ 2 ]

1 голос
/ 26 июля 2011

Объект зависимости имеет определенный тип, но основное отличие от простых или даже обновляемых свойств заключается в том, что изменения значений могут происходить без вызова метода получения и настройки.

Только Прикрепленные (зависимые) свойства получают их статический установщик, вызываемый извне (во время синтаксического анализа Xaml).

Пара DP Setter / Getter для вашегоудобство, чтобы избежать много кастинга.SetValue фактически используется вместо всего остального (система раскадровки и т. Д.).

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

0 голосов
/ 18 августа 2011

Насколько я обнаружил, к сожалению, то, что я просил, невозможно сделать в Silverlight.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...