Я недавно использовал привязку данных в 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
'BindingList' предназначен для презентации-агностик. Все это обеспечивает необходимую инфраструктуру для обнаружения изменений. Независимо от того, какой сценарий привязки данных WHAT используется, * в системе * есть * система отслеживания изменений (или, точнее, * уведомление об изменении уведомлений), чтобы изменения в данных автоматически отражались в графическом интерфейсе. Нет ничего «вонючего» в использовании 'BindingList'. –