【问题标题】:WPF DataBinding, CollectionViewSource, INotifyPropertyChangedWPF 数据绑定、CollectionViewSource、INotifyPropertyChanged
【发布时间】:2010-03-11 16:54:06
【问题描述】:

当我第一次尝试在 WPF 中做某事时,我对 WPF DataBinding 感到困惑。然后我在 MSDN 上彻底研究了下一个示例:http://msdn.microsoft.com/en-us/library/ms771319(v=VS.90).aspx

现在,我非常了解如何将 Master-Detail 范例用于从一个源(一个表)获取数据的表单 - 用于主部分和详细部分。 我的意思是,例如,我有一个包含数据的网格,在网格下方我有一些包含当前行详细数据的字段。

但是,如果详细数据来自不同但相关的表,该怎么办? 例如:您有一个表“用户”,其中包含“id”和“名称”列。您还有另一个表“图片”,其中包含“id”、“文件名”、“UserId”等列。现在,使用主从范式,您必须构建一个表单。每次在 Master 中选择一行时,您都应该在 Details 中获取所有相关图片。

正确的做法是什么? 你能给我举个例子吗?

【问题讨论】:

    标签: c# wpf data-binding inotifypropertychanged collectionviewsource


    【解决方案1】:

    我不确定您是如何访问您的表格的。但我喜欢使用实体框架。 您的“图片”表中似乎有一个指向“用户”主键的外键关系。

    使用 Entity Framework 4 和 .Net 4(在我写这篇文章的时候都在 RC 中),事情非常顺利。您只需根据当前数据库生成模型。这几乎可以为您将所有数据库记录映射到类。您的每个表都将是您模型中的一个集合(我将其称为上下文),因此您可以通过以下方式访问它们:

    context.Users 和 context.Pictures

    context.Users 将自动拥有一个名为 Pictures 的“导航属性”,它只是具有指向该用户的外键的特定图片的集合。

    因此您可以将您的主“网格”绑定到 context.Users 以显示您喜欢的有关用户的任何信息。然后在您的详细信息部分中,您可以将您的详细信息“列表”绑定到: (grid.selectedRow 作为用户).图片

    以上只是伪代码,希望它可以让您朝着正确的方向开始。

    如果您不想使用实体框架,如果您可以提供有关如何从数据库访问信息的更多信息,我或许可以提供更多具体示例来说明如何对您的主细节场景进行数据绑定。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-05
      • 1970-01-01
      • 1970-01-01
      • 2013-07-31
      相关资源
      最近更新 更多