【发布时间】:2013-08-23 19:02:06
【问题描述】:
我有一个非常复杂的数据绑定,我想在这里使用以下方法完成:
- 2 个名为
mainTable和secondaryTable的 SQL CE 表 - 1 Fluidkit ElementFlow control 命名为
myElmntFlow - 2 个名为
myUsrCtrl和otherUsrCtrl的用户控件
以上所有内容都已创建并实现,但用户控件通过冗长的后台工作代码以编程方式填充到myElmntFlow 控件的项目列表中.
这是它们现在的创建方式:
如果“Selected”列中的行值=“'Yes'”,则后台工作程序循环遍历mainTable 的每一行并将myUsrCtrl 控件添加到myElmntFlow 中的项目列表中。
然后,它将新添加的myUsrCtrl 的内容修改为:它在myUsrCtrl 的堆栈面板(名为stckPanel)中为secondaryTable 中的每一行添加一个otherUsrCtrl,其中的值“FullName”列 = 我们用于创建 myUsrCtrl 控件的 mainTable 行的同一列的值。
然后用当前查看的secondaryTable 行的值填充otherUsrCtrl 的多个标签。
非常令人困惑,但这是一个复杂的场景。举个例子:
- 在
mainTable中,第 4 行的 FullName 值为“Chad Jones”,并且 还具有“是”的选定值。 -
myUsrCtrl控件的新实例添加到myElmntFlow的项目列表如下:myElmntFlow.Items.Add(myUsrCtrl); - 新添加的 myUsrCtrl 控件有一个堆栈面板 (
stckPanel) - 我们过滤
secondaryTable,其中 FullName = "Chad Jones" - 对于现在过滤的
secondaryTable中的每一行,我们添加一个新的otherUsrCtrl的实例到先前创建的myUsrCtrl的stckPanel控制 -
otherUsrCtrl中的不同标签填充有 排在secondaryTable
这是否可以在控件的 XAML 中转换为 DataBinding,因为我想稍后实现几个功能(例如带有自动完成功能的漂亮 SearchBox),如果它们要通过编写数百个来编码,那将是相当糟糕的行来告诉哪些数据要过滤、排序、获取、比较等......
我尽可能清楚地写了这个,只是希望它可以理解。
PS:我想保留我的 SQL 结构,因为随着时间的推移,数据会变得相当重要,而且我相信 SQL 是处理数千行时的最佳选择。
【问题讨论】:
-
为什么要手动添加到 myElmntFlow.Items 而不是绑定到集合?您是在后台创建 myUsrCtrl 吗?
-
我的用户控件已经创建,但在后面的 C# 代码中作为新实例被调用。您的第一点是为什么我首先问这个问题,我想将其更改为 Binding 模型但我不熟悉它。
-
如果 ElementFlow 不是绑定到集合(转发器控件)的控件,则考虑另一种设计。如果它绑定到一个集合,那么就这样做。如果您不熟悉绑定到集合,请从简单的 ListView 控件开始。
标签: c# wpf data-binding user-controls