gpt4 book ai didi

c# - WPF C# - 复杂数据绑定(bind)

转载 作者:太空宇宙 更新时间:2023-11-03 13:37:04 24 4
gpt4 key购买 nike

我有一个非常复杂的数据绑定(bind),我想使用以下方法在这里完成:

  • 2 个名为 mainTablesecondaryTable 的 SQL CE 表
  • 1 Fluidkit ElementFlow control名为myElmntFlow
  • 2 个名为 myUsrCtrlotherUsrCtrl 的用户控件

以上所有内容都已创建和实现,但用户控件通过冗长的后台工作代码以编程方式填充到 myElmntFlow 控件的项目列表中,当项目数量增加时,该代码确实需要花费大量时间来运行输入是 > 20。

目前它们是这样创建的:backgroundworker 遍历 mainTable 的每一行,如果列中的行的值“已选择"= "'是'"。

然后,它修改新添加的 myUsrCtrl 的内容:它添加一个 otherUsrCtrlmyUsrCtrl 的堆栈面板(命名为stckPanel) 对于 secondaryTable 中的每一行,其中“FullName”列的值 = 我们使用的 mainTable 行的同一列的值创建 myUsrCtrl 控件。

然后用当前查看的 secondaryTable 行的值填充 otherUsrCtrl 的几个标签。

非常困惑,但这是一个复杂的场景。让我们举个例子:

  • mainTable 中,第 4 行的 FullName 值为“Chad Jones”,并且还具有"is"的选定值。
  • myUsrCtrl 控件的一个新实例被添加到myElmntFlow 的项目列表如下:myElmntFlow.Items.Add(myUsrCtrl);
  • 新添加的myUsrCtrl控件有一个stackpanel(stckPanel)
  • 我们过滤 secondaryTable,其中 FullName = "Chad Jones"
  • 对于过滤后的 secondaryTable 中的每一行,我们添加一个新的otherUsrCtrl 的实例到先前创建的 myUsrCtrlstckPanel控件
  • otherUsrCtrl 中的不同标签填充了secondaryTable
  • 中的行

是否可以将其转换为控件 XAML 中的 DataBinding,因为我想稍后实现几个功能(例如具有自动完成功能的漂亮搜索框),如果通过编写数百个代码来隐藏这些功能,那将是非常糟糕的行来告诉要过滤、排序、获取、比较等的数据...

我尽可能清楚地写了这篇文章,希望它能被理解。

PS:我想保留我的 SQL 结构,因为随着时间的推移,数据会变得非常重要,而且我相信 SQL 是处理数千行的方式。

最佳答案

这不是一个非常令人困惑的场景,只是因为那里进行的复杂处理而变得令人困惑。使用绑定(bind)和 MVVM(模型- View - View 模型)确实可以使它变得更容易,所以请花一些时间阅读它的基础知识。网络上有大量的教程和介绍性资料,只需简单搜索一下就足够了。

当您熟悉这些概念后,您只需将数据转换为一系列对象(无论您如何处理),然后使用 ItemsControl 来表示项目列表的 UI。使用 DataTemplates 指定每个项目的显示方式,将 DataTemplate 中的元素绑定(bind)到每个项目的属性。这些东西可以嵌套,因此您可以在使用其他 DataTemplates 等的 DataTemplates 中包含 ItemsControls。

为了表示绑定(bind)到 ItemsControl 的项目集合,请考虑使用 ICollectionView,这将极大地帮助过滤/排序等。

很抱歉,我的笔触非常宽泛,但这是一个相当宽泛的问题。如果您需要更具体的帮助,我很乐意添加更多内容。

关于c# - WPF C# - 复杂数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18356886/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com