WPF DataContext для Child / Detail UserControl / View - PullRequest
1 голос
/ 27 августа 2009

Я новичок в C # и WPF, поэтому, пожалуйста, потерпите меня ..

Это не совсем сценарий Master / Detail, и может быть поэтому у меня возникли проблемы, но в целом я пытаюсь выяснить, как соотнести два набора данных, которые не совсем Master / Detail.

Для простоты, скажем, у меня есть две модели view / view для

1) Person
ID, FirstName, LastName

2) Contact
ID, PhoneNumber

Теперь я знаю, что вы обычно думаете о Человеке, имеющем несколько контактов, и это будет примерно так:

    Contact :  
ID, PersonID, PhoneNumber

но для этого примера давайте продолжим путь, которым я иду ...

У меня есть другая таблица, таблица соединений, которая имеет

PersonID
ContactID

Теперь, если Боб и Мэри имеют один и тот же номер телефона, в таблице присоединения есть 2 записи

1 1
2 1

(при условии, что Боб равен 1, Мэри - 2, а 555-555-5555 - ID 1 для контакта)

Итак, я строю представление и модель представления для Человека, нет проблем Я строю представление и модель представления для контакта, снова без проблем

Теперь, как, если я создам представление, которое использует Person в качестве главного и Contact в качестве детализации, чтобы ограничить отображение только этих контактов для выбранного человека? И точно так же, если у меня есть другое представление Контактных номеров и я хочу увидеть список людей, связанных с этим выбранным номером, как это сделать.

Возможно, это что-то легкое, но я не могу понять это.

Или мне нужно фактически создать ObservableCollection в модели представления Person, а также ObservableCollection в модели представления Contact?

Любая помощь будет оценена.

1 Ответ

0 голосов
/ 15 июня 2010

Отношения «многие ко многим», концепция базы данных, трудно выразить в C #.

Один из способов реализовать это:

  1. Пусть ваш объект Person предоставит коллекцию объектов Contact, принадлежащих этому человеку.
  2. Пусть ваши объекты Contact предоставляют коллекцию объектов Person, которые совместно используют этот набор контактной информации.

Это позволяет вашему представлению «Персона» и представлению «Контакт» работать так же, как стандартные представления основных данных.

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