|
|
1
3
每个UI控件都需要自己的某种状态。对于复杂的控件(如ListView),状态也相应地复杂。诀窍是使控制状态的维护尽可能简单。使用标准的listview,这是不可能的——程序员必须完成这项工作。 这就是我写作的原因之一 ObjectListView (围绕.NET WinForms ListView的开放源代码包装)。它允许您在更高级别上使用ListView,其中控件状态的维护是不可见的。对象列表视图直接对模型对象进行操作:
一旦您可以在这个级别上工作,数据绑定本身就没有那么有用了。但是,如果您真的想使用它,可以使用 对象列表视图 项目。它让你两全其美。 对于ObjectListView,没有理由切换到更不有趣的DataGridView。ObjectListView为您提供了使用ListView漂亮的UI功能的DataGridView的便利性,然后还提供了一些其他功能: |
|
|
2
2
标准的数据绑定可能使您的生活在这里变得更简单。使用A
但是,您可能希望将ListView替换为(只读)
|
|
|
3
1
数据绑定是一种方法。看看这篇文章,它非常有帮助: Data Binding in .NET / C# Windows Forms
|
|
|
4
1
我想没有 正确的 解决这个问题的方法。通常,我强烈支持通过各种方式将数据源集合与UI分离。有几种数据绑定解决方案可以将两者结合在一起。 不管怎样,让我考虑一下你所暴露的观点。 打开 冗余 :对于用户头脑中基本相同的实体,您确实有两个列表。这些清单根本不对等。 首先,不会有重复的内存。UI端的列表可能引用了数据源列表中的原始对象,但它只是一个引用。总的内存消耗不会比在UI中有一个集合对象大很多。 第二,这两个列表(UI和数据源)的项目数可能不同。如果在接口中使用分页,那么UI列表可能比数据源列表小得多。 论 复杂性 :使用良好的数据绑定解决方案可以大大降低UI与其数据源同步的复杂性。有些情况下,将两个列表分开实际上 简化 您的代码。 考虑使用单独的窗口/页面/用户控件/负责编辑(新的或旧的)对象的任何对象的可能性。如果您的UI上只有一个对象集合,那么这个单独的组件必须引用保存列表的同一个UI控件。这完全没有道理。 |
|
5
0
访问的问题
所以您可以选择,添加两个数据结构副本的内存,或者在取消时回滚的复杂性。 |
|
|
6
0
退房 this 关于数据绑定的文章。对于ListView之类的东西,可以绑定到实现列表接口之一的自定义类。通过为事件的自定义类添加支持,您可以在列表发生更改时自动更新GUI(反之亦然)。 |
|
|
7
0
我刚刚用一个列表(myObject)和列表视图来处理这个混乱。ListView的不足之处在于,它不像其他许多对象容器(如ComboBox、ListBox和DataGridView)那样提供.datasource属性。我选择删除ListView而不是DataGridView,仅仅是因为我的要求不需要ListView(我在DataGridView中添加了一个自定义的第一列来呈现图像,这就是我最初选择ListView的原因。但你是对的,让事情保持同步的额外代码太让人头疼了。关于你的问题,做我做的。看看你是不是 真的? 通过考虑是否可以改用DataGridView并满足要求来要求ListView。 |