【发布时间】:2014-03-26 17:46:51
【问题描述】:
我的具体问题背后有大量代码,因此我将尝试了解我想要实现的目标背后的方法,而不是提供/请求任何编码示例。话虽如此,我将在以后发布并接受尽可能多的代码以达到这种理解水平 - 我们会看看这是怎么回事!
背景:
我开发了一个嵌套列表视图。那是一个 ListView,它在每个 ListViewItem 中包含另一个 ListView(如果您愿意,可以使用一点 List-View-Ception)。
Upper Listview需要包含一张表的数据,而Nested Listview需要包含相关表的数据(外键链接)
最初,我开发了一个定义嵌套 ObservableCollection 的类(类/列表视图中的数据比它的嵌套集合更多 - 但我们现在将忽略这一点!)。
然后:
- 使用我的 SQL 数据库类填充 ObservableCollection 并带有一个看起来很吸引人的循环
- 用另一个看起来很吸引人的循环填充每个嵌套集合;手动从相关表中选择正确的数据
- 将我的 Listview 的 DataContext 设置为 Collection
- 最后将 XAML 中的绑定值设置为与我的可观察集合类的公共名称相同
问题已解决。问题已回答。非常感谢。
然后:
- 发现 Linq-To-SQL
- 删除了我的 SQL 数据库类
- 删除了我的 ObservableCollection 类
- 继续删除暴行,我的程序变量将在未来几年内记住它。
所以,我创建了 Linq-to-SQL 类,连接到我的数据库并将表拖到提供的界面中。
当我看到 Designer.cs 的内容时,我惊呆了 - 一个完美建模的结构,完美地代表了我的两张桌子,我不得不惊叹不已。
然后:
- 创建了一个继承 ObservableCollection(我的数据库中的表)的新类
- 在我的新类的构造函数中放置一个 foreach 循环来填充集合
- 创建了这个类的第一个对象,发送一个 Linq-to-Sql 类的数据上下文对象(AKA:在我的表中创建数据的集合)
- 重命名我的绑定路径值以匹配我数据库中列的值
- 删除了我键盘上的 F5 键
Listview 包含数据 - 不得不说,这个系统给我留下了深刻的印象。
问题:
但是,每个项目的嵌套列表视图都是空的!
那么,我:
- 检查了数据库;第二个表包含数据,与外键正确链接
- 在 Designer.cs 中注意到嵌套数据将存储在 EntitySet 中
- 调试并检查 ObservableCollection
我找到了数据,并对 Linq-To-SQL 类根据外键值将第二个表数据正确地分隔到每个集合项印象深刻。事实上,我印象非常深刻。
但是,我不知道如何绑定这些值并让它们显示!他们在这里(调试中):
- TheDataContextObject[N-Item]->TheNestedEntitySet->non-public members->entities->[The List of Nested Data for that Item]
该实体集中的数据是正确的 - 我只是不明白如何绑定到这些值。
感谢所有帮助 - 随着时间的推移,我将努力提高问题的总体质量,并将接受所有建议。
非常感谢。
【问题讨论】:
-
探索实体框架,请^-^。哦,还有 MVVM。
-
@StefanDenchev - 很高兴。您能否向我提供一个推荐的链接,我不太可能在我即将进行的谷歌搜索中找到...谢谢。
-
当然,here 的 MVVM,您可以在复数视觉查看 Julie Lerman 的教程..
标签: c# wpf xaml listview linq-to-sql