Atualização de BindingSource no WinForms não atualiza a coleção de fonte de dados

Quero exibir uma coleção personalizada em umDataGridView em um aplicativo do Windows Forms. Esta coleção customizada implementaICollectioneIEnumerable. Eu configurei umBindingSource, usando a coleção como a propriedade .DataSource. oDataGridView está definido para usar o meuBindingSource como é DataSource. Quando adiciono um novo item à coleção usando oBindingSource.Add() método, oDataGridView atualiza corretamente com o novo item. oBindingSource DataSource, por outro lado, não:

MyCustomCollection myCollection = new MyCustomCollection();

myCollection.Add(myCustomObject1);
myCollection.Add(myCustomObject2);

myBindingSource.DataSource(myCollection);
myBindingSource.Add(myCustomObject3);

No código acima, a Lista interna do myBindingSource contém o número correto de registros (3), e oDataGridView também contém três registros, mas myCollection contém apenas dois registros. Eu sei que mudar o myCollection subjacente NÃO atualizará oBindingSource ou oDataGridView, como não é umBindingList<T>, mas fiquei com a impressão de que atualizar umBindingSource diretamente garantiria que myCollection fosse atualizado ao mesmo tempo.

Existe uma maneira de usar uma coleção que não é umBindingList<T> e atualizá-lo ao interagir com oBindingSource diretamente?

AtualizarUma forma de obter os dados atualizados em todas as partes (Coleção, BindingSource, DataGridView) é a seguinte:

myCollection.Add(myCustomObject3);
myBindingSource.DataSource = null;
myBindingSource.DataSource = myCollection;

Tenho certeza de que há uma maneira melhor de atacar esse problema, mas esse é o único método que gerou os resultados que eu esperava.

questionAnswers(4)

yourAnswerToTheQuestion