Re[2]: listbox.datasourse двухсторонний обмен данными
От: Poul_Ko Казахстан  
Дата: 01.03.07 03:06
Оценка:
Здравствуйте, cvetkov, Вы писали:

C>кажеться коллекция должна реализовывать IBindingList или чтото в этом роде. точно не помню


Всё верно. Если ваша коллекция предназначена только для биндинга, то можно не создавать свой класс коллекции, а воспользоваться BindingList<T>. Вот пример для ComboBox'а :
private class AddressToken : INotifyPropertyChanged, IDisposable
{
...
}
...
private BindingList<AddressToken> _addressTokens;
...
cmbAddress.BeginUpdate();
cmbAddress.Items.Clear();
_addressTokens = new BindingList<AddressToken>();
_addressTokens.AllowEdit = false;
_addressTokens.AllowNew = false;
_addressTokens.AllowRemove = false;
foreach (DataRowView rowView in AddressBindingSource)
{
    _addressTokens.Add(new AddressToken(rowView.Row));
}
cmbAddress.DataSource = new BindingSource(_addressTokens, string.Empty);
cmbAddress.DisplayMember = "Address";
cmbAddress.ValueMember = "Id";
UpdateSelectedAddress();
cmbAddress.EndUpdate();

Все действия с коллекцией _addressTokens сразу же будут отражаться в ComboBox'е. Если элемент коллекции правильно реализует INotifyPropertyChanged, то будут автоматически отображаться изменения в значении отображаемого свойства (в данном примере — Address).
Brainbench transcript #6370594
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.