Реализация master-detail с 2 таблицами в наборе данных (wpf)

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

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

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

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

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


person Dani    schedule 18.06.2010    source источник


Ответы (2)


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

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

var view = CollectionViewSource.GetDefaultView(myList);
person kiwipom    schedule 18.06.2010

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

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

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

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

Сетка будет привязана к SelectedUser.Emails Следовательно, все будет привязано, и поток будет работать нормально.

person Amsakanna    schedule 18.06.2010