【发布时间】:2017-01-20 17:33:53
【问题描述】:
来自 Qt,在我看来 BindingSource 类提供了相同的功能,并且旨在以与 Qt 中的 QSortFilterProxyModel 相同的方式使用。
阅读When is it worth using a BindingSource?及其答案后:
过滤,排序,同时不改变记录本身的排序顺序(Filter/Sort)
还有:
一个 BindingSource 可以充当另一个 BindingSource 的数据源
这些功能与 Qt 中的 QSortFilterProxyModel 提供的功能相同。
有 Qt 和 Winforms 经验的人能否告诉我我的理解是否正确,如果不正确,使用 BindingSource 和 QSortFilterProxyModel 最大的区别是什么?
【问题讨论】:
-
我不熟悉 QSortFilterProxyModel,但
BindingSource本身不提供任何排序/过滤功能。它充当实际数据源和绑定控件之间的中介,将所有功能请求委托给底层数据源。 IMOBindingSource的主要目的是提供设计时数据绑定支持。 -
嗯,在我链接的问题的答案之一中,他们说它提供“过滤、排序,同时不改变记录本身的排序顺序(过滤器/排序)”,所以我认为这是情况,但也许他们的意思是别的。
-
回答者肯定不知道他们在说什么:) 见source。
-
@IvanStoev 你能不能写一个重新定义绑定源的答案(也许与我的答案相比),这些共同构成一个不错的答案。
-
@sashoalm 我认为它既不是 View 也不是 Model(也不是 MVVM 的 ViewModel)——它是一个 Bridge 或 Adapter 模式。模型是实际的底层源和一些用于数据绑定的标准接口/模式。同样,
BindingSource对我来说的主要好处是您可以在设计时将DataSource属性设置为typeof(MyObject),并且可以填充和设计DataGridView列(重新排序、隐藏、更改属性),对于数据也是如此文本框的绑定等。然后在运行时分配真实的数据源,例如MyObject 实例或 List实例等,一切正常
标签: winforms qt bindingsource qsortfilterproxymodel