用于子/详细用户控件/视图的WPF DataContext

时间:2009-08-27 05:16:37

标签: c# wpf datacontext

我是C#和WPF的新手,所以请耐心等待..

这不完全是主/细节方案,可能是我遇到问题的原因,但一般来说,我试图弄清楚如何关联两组不完全主/细的数据。

为了简单起见,假设我有两个视图/视图模型

1) Person
ID, FirstName, LastName

2) Contact
ID, PhoneNumber

现在,我通常知道你会想到一个有几个联系人的人,它会是这样的:

    Contact :  
ID, PersonID, PhoneNumber

但是对于这个例子,让我们继续我的方式......

我有另一个表,一个连接表,有

PersonID
ContactID

现在,如果Bob和Mary都有相同的电话号码,则联接表中有2个条目

1 1
2 1

(假设Bob为1,Mary为2,而555-555-5555为联系人ID为1)

所以,我为Person构建了视图和视图模型,没问题 我为联系人构建了视图和视图模型,再次没有问题

现在,如果我构建一个使用Person作为主视图和Contact作为详细信息的视图,如何限制仅显示所选人员的那些联系人?同样,如果我有另一个联系人#的视图,我想查看与该选定号码相关联的人员列表,那么如何执行此操作。

这可能很容易,但我似乎无法弄明白。

或者,我是否需要在Person视图模型中实际创建ObservableCollection以及在Contact视图模型中创建ObservableCollection?

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

数据库概念中的多对多关系很难用C#表达。

实现这一目标的一种方法是:

  1. 让您的Person对象公开属于该人的Contact对象的集合。
  2. 让您的Contact对象公开一组共享该组联系信息的Person对象。
  3. 这允许您的人员视图和联系人视图像标准主 - 详细信息视图一样运行。