Привязка данных WPF, CollectionViewSource, INotifyPropertyChanged - PullRequest
1 голос
/ 11 марта 2010

Первый раз, когда я пытался что-то сделать в WPF, я был озадачен WPF DataBinding. Затем я тщательно изучил следующий пример на MSDN: http://msdn.microsoft.com/en-us/library/ms771319(v=VS.90).aspx

Теперь я вполне понимаю, как использовать парадигму Master-Detail для формы, которая берет данные из одного источника (из одной таблицы) - как для основной, так и для подробной частей. Я имею в виду, например, у меня есть сетка с данными, а под сеткой у меня есть несколько полей с подробными данными текущей строки.

Но как это сделать, если подробные данные поступают из разных, но связанных таблиц? например: у вас есть таблица «Пользователи» со столбцами - «id» и «Name». У вас также есть другая таблица «Изображения» со столбцами, такими как «id», «Filename», «UserId». И теперь, используя парадигму master-detail, вы должны построить форму. И каждый раз, когда вы выбираете строку в мастере, вы должны получать все связанные изображения в деталях.

Как правильно это сделать? Не могли бы вы показать мне пример?

1 Ответ

3 голосов
/ 11 марта 2010

Я не уверен, как вы получаете доступ к своим таблицам.Но мне нравится использовать Entity Framework.Похоже, что у вас есть связь с внешним ключом в вашей таблице «рисунков», указывающая на ваш первичный ключ «пользователя».

Использование Entity Framework 4 и .Net 4 (оба в RC на момент написания этой статьи)довольно гладкоВы просто создаете модель на основе вашей текущей базы данных.Это в значительной степени отображает все ваши записи базы данных для классов для вас.Каждая из ваших таблиц будет коллекцией в вашей модели (которую я буду называть контекстом), поэтому вы можете получить к ним доступ следующим образом:

context.Users и context.Pictures

context.Usersбудет автоматически иметь «свойство навигации» с именем Pictures, которое просто представляет собой набор конкретных изображений, имеющих внешние ключи, указывающие на этого пользователя.

, поэтому вы должны привязать свою основную «сетку» к context.Users для отображения любогоинформация о пользователе, который вам нравится.Затем в своем разделе сведений вы можете привязать свой «список» сведений к: (grid.selectedRow от имени пользователя). Картинки

Выше приведен только псевдокод в надежде, что он поможет вам начать работу в правильном направлении.

Если вы не хотите использовать Entity Framework, если бы вы могли предоставить больше информации о том, как вы получаете доступ к информации из вашей базы данных, я мог бы предоставить более конкретный пример того, как привязать данные к вашему основному сценарию детализации..

...