我第一次尝试在WPF中做某事时,我对WPF DataBinding感到困惑。然后我在MSDN上研究了下一个例子:http://msdn.microsoft.com/en-us/library/ms771319(v=VS.90).aspx
现在,我完全理解如何使用Master-Detail范例来获取从一个源(一个表)获取数据的表单 - 包括主数据和详细部分。 我的意思是,例如我有一个数据网格,在网格下面我有几个字段,其中包含当前行的详细数据。
但如果详细数据来自不同但相关的表格怎么办呢? 例如:您有一个表'Users',其中包含列 - 'id'和'Name'。您还有另一个表'Pictures',其中包含'id','Filename','UserId'等列。现在,使用master-detail范例,你必须构建一个表单。每当你在Master中选择一行时,你应该在Details中获得所有相关的图片。
这样做的正确方法是什么? 你能告诉我一个例子吗?
答案 0 :(得分:3)
我不确定您是如何访问表格的。但我喜欢使用实体框架。 您的“图片”表中显示您的外键关系,指向您的“用户”主键。
使用Entity Framework 4和.Net 4(在我写这篇文章时都在RC中),事情非常顺利。您只需根据当前数据库生成模型。这几乎可以将您的所有数据库记录映射到类。每个表都是模型中的集合(我将称之为上下文),因此您可以通过以下方式访问它们:
context.Users and context.Pictures
context.Users将自动拥有一个名为Pictures的“导航属性”,它只是具有指向该用户的外键的特定图片的集合。
因此您可以将主“网格”绑定到context.Users以显示有关您喜欢的用户的任何信息。然后在您的详细信息部分中,您可以将详细信息“列表”绑定到: (grid.selectedRow as User).Pictures
上面只是伪代码,希望它能让你开始朝着正确的方向前进。
如果您不想使用Entity Framework,如果您可以提供有关如何从数据库访问信息的更多信息,我可以提供更多关于如何对主详细信息方案进行数据绑定的具体示例。 / p>