我创建了一个包含 2 个表的数据集:用户(用户 ID、用户名、其他用户详细信息)电子邮件(Id、UserId、UserEmail)
我使用 2 个 DataAdapter 填充数据集(每个表一个)
我有一个列表框、几个文本框和一个网格。列表框获取所有用户,少数文本框在列表框中选择时显示用户详细信息(这很容易,因为它们都绑定到同一个表)。
网格应显示所选用户的电子邮件地址。
我如何使用绑定来做到这一点?是否有可能或者我应该捕获选择更改事件并“手动”过滤网格(当前网格显示表格中的所有电子邮件)。
我创建了一个包含 2 个表的数据集:用户(用户 ID、用户名、其他用户详细信息)电子邮件(Id、UserId、UserEmail)
我使用 2 个 DataAdapter 填充数据集(每个表一个)
我有一个列表框、几个文本框和一个网格。列表框获取所有用户,少数文本框在列表框中选择时显示用户详细信息(这很容易,因为它们都绑定到同一个表)。
网格应显示所选用户的电子邮件地址。
我如何使用绑定来做到这一点?是否有可能或者我应该捕获选择更改事件并“手动”过滤网格(当前网格显示表格中的所有电子邮件)。
如果您有一个包含所有电子邮件的集合,那么您可以尝试让ItemsSource您的网格成为实现ICollectionView接口的对象 - 这允许您过滤、排序和分组您的集合......
可以通过调用获取实现该接口的对象
var view = CollectionViewSource.GetDefaultView(myList);
您可以拥有一个名为 SelectedUser 的属性并将其绑定到 ListBox 的 SelectedItem。在属性的设置器中,您可以过滤绑定到网格的电子邮件列表。
但从长远来看,您可以使用一些 ORM 工具或 VS 中可用的 Linq-to-sql 从表中创建模型,这将创建模型及其关系。因此,当你会有这样的事情时
Class User
{
UserId, UserName, List<Email> that user has
}
您可以创建一个List<User>和一个SelectedUser将绑定到 UI 元素的属性。
网格将被绑定到SelectedUser.Emails因此一切都被绑定并且流程可以正常工作。