在数据集中使用2个表实现master-detail(wpf)

时间:2010-06-18 09:16:22

标签: wpf master-detail

我创建了一个包含2个表的数据集: 用户(userID,UserName,其他用户详细信息) 电子邮件(Id,UserId,UserEmail)

我使用2个DataAdapters(每个表一个)填充数据集

我有一个列表框,一些文本框和一个网格。 listbox获取所有用户,少数文本框在列表框中选中时显示用户详细信息(这很容易b / c它们都绑定到同一个表)。

网格应显示所选用户的电子邮件地址。

如何使用绑定进行操作?是否有可能或者我应该抓住选择更改事件并“手动”过滤网格(当前网格显示表格中的所有电子邮件)。

2 个答案:

答案 0 :(得分:0)

如果您有一个包含所有电子邮件的集合,那么您可以尝试将网格的ItemsSource视为实现ICollectionView接口的对象 - 这样您就可以对其进行过滤,排序和将您的收藏分组......

您可以通过调用

来获取实现此接口的对象
var view = CollectionViewSource.GetDefaultView(myList);

答案 1 :(得分:0)

您可以拥有一个名为SelectedUser的属性,并将其绑定到ListBox的SelectedItem。在属性的setter中,您可以过滤绑定到网格的电子邮件列表。

但是从长远来看,你可以使用VS中提供的一些ORM工具或Linq-to-sql来创建表格中的模型,这将创建模型及其关系。因此,当你有这样的东西时

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

您可以创建一个绑定到UI元素的List<User>SelectedUser属性。

网格将绑定到SelectedUser.Emails因此,一切都已绑定,流程也能正常工作。