Лучший способ привязать данные WCF DomainService к TreeView в Silverlight? - PullRequest
2 голосов
/ 28 февраля 2011

У меня есть структура базы данных, подобная этой:

Предметы

  • ID
  • Имя
  • ParentItemFK (задачи и заметки могут иметь любой элемент как родительский; у категорий могут быть только другие категории как родительский)
  • CategoryFK
  • TaskFK
  • NoteFK

Категория

  • Описание (необязательно)

Задачи

  • ID
  • FullDescription
  • IsComplete

Примечания

  • ID
  • FullText

Элементы должны отображаться в TreeView. Элементом может быть категория, задача или примечание (поэтому заполняется один и только один из столбцов FK).

Я хотел бы отобразить все элементы в TreeView. Я использую DomainService с WCF для получения данных из серверной части для отображения в Silverlight.

Я мог бы программно создавать объекты для отображения в TreeView (т.е. создавать такой объект, как ItemNode, с дочерними ItemNodes для каждого подэлемента). Это, вероятно, будет работать нормально, но когда обновляются данные, которые есть у DomainService, я думаю, что весь список ItemNodes придется перестраивать (что может случаться часто).

Я использую платформу сущностей под DomainService, если это имеет значение.

Есть ли лучший способ сделать это ??

Спасибо!

1 Ответ

1 голос
/ 29 марта 2011

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

Я также использовал тип данных Иерархия SQL для представления моей Иерархии в базе данных.

Поскольку вы используете Entity Framework, я думаю, что вам лучше всего просто создать некоторый класс TreeNode, который будет принимать ваши сущности, а затем проходить через них и выплевывать обратно иерархию TreeNodes, которую вы затем сможете связать с TreeView. .

Кроме того, вы захотите поместить уникальный идентификатор для этой сущности в TreeNode.Value, чтобы при взаимодействии пользователя с узлом вы могли легко изменять сущность, которая представляет TreeNode. Итак, создайте другой класс, который будет проходить через ваши сущности и получать ссылку на эту сущность на основе ее идентификатора.

НТН

...