最佳做法,我最近一直使用的数据在C#约束力,而我做的方式是直接和工作,它不觉得自己是最好的办法。数据绑定控件,用于封装
例如,我有一个管理器类,即的UserManager它具有以下接口:
class UserManager
{
public IList<User> Users { get; ...}
public AddUser(...)
public RemoveUser(...)
}
所以Adduser
和RemoveUser
应控制列表,与Users
集合作为输出。我使用这个集合中结合,即:
listBindingSource.DataSource = userManager.Users;
我然后通过绑定操作的列表,即
listBindingSource.Add(new User(...))
这个工作,当然,但我完全绕过UserManager
和在那里的功能AddUser
/RemoveUser
!这当然显得非常错误。什么是使用数据绑定的正确方法?
UserManager
是一个lib里面,所以我不想把任何绑定对象在那里,因为我觉得这应该是一个GUI的事情。另一方面,通过绑定,我的gui完全控制了我的收藏。
谢谢,这是非常好的信息。我有点担心必须将我的内部列表指定为BindingList,因为我觉得它不需要知道它将如何使用。但我想这个替代方案会是一些中间转换层,对于一个小项目来说这并不值得。 – DanDan 2009-10-06 20:10:30
'BindingList'被设计为与表示无关。它所做的只是为检测变化提供必要的基础设施。无论您使用的是何种数据绑定方案,*都具有*作为变更跟踪(或更确切地说,更改通知*)系统,以便更改数据自动反映在GUI上。使用'BindingList'没有什么“臭”。 –
2009-10-06 20:44:53