Реализация master-detail с двумя таблицами в наборе данных (wpf) - PullRequest
0 голосов
/ 18 июня 2010

Я создал набор данных, который содержит 2 таблицы: Пользователи (userID, UserName, другие данные пользователя) Электронные письма (Id, UserId, UserEmail)

Я заполняю набор данных, используя 2 адаптера данных (по одной для каждой таблицы))

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

сетка должна отображать электронную почту выбранного пользователяадреса.

Как мне сделать это с помощью привязки?возможно ли это или я должен поймать событие изменения выбора и отфильтровать сетку «вручную» (в настоящее время сетка отображает все электронные письма в таблицах).

Ответы [ 2 ]

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

Вы можете иметь свойство SelectedUser и привязать его к SelectedItem объекта ListBox.В установщике свойства вы можете отфильтровать список электронной почты, связанный с сеткой.

Но в долгосрочной перспективе вы можете создавать модели из ваших таблиц, используя некоторые инструменты ORM или Linq-to-sql, доступныеVS, который будет создавать модели и их отношения.Следовательно, когда у вас будет что-то вроде этого

Class User
{
    UserId, UserName, List<Email> that user has
}

Вы можете создать свойство List<User> и SelectedUser, которое будет связано с элементами пользовательского интерфейса.на SelectedUser.Emails Следовательно, все связано, и поток будет работать нормально.

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

Если у вас есть коллекция, содержащая все электронные письма, то вы можете попробовать сделать ItemsSource вашей сетки объектом, реализующим интерфейс ICollectionView - это позволяет фильтровать, сортировать и сгруппируйте свою коллекцию ...

Вы можете получить объект, который реализует этот интерфейс, вызвав

var view = CollectionViewSource.GetDefaultView(myList);
...