Привет!
Вот на что я напоролся: sender в событии ListChanged вовсе не тот, к кому подписывался, а внутренний BindingListImpl!
Просьба пофиксить

.
Здравствуйте, Аноним, Вы писали:
А>Вот на что я напоролся: sender в событии ListChanged вовсе не тот, к кому подписывался, а внутренний BindingListImpl!
А>Просьба пофиксить
.
Как воспроизвести?
Здравствуйте, IT, Вы писали:
IT>Как воспроизвести?
Добавить в файл UnitTests\CS\EditableObjects\EditableArrayListTest.cs в метод TestList_ListChanged выделенную строчку:
private void TestList_ListChanged(object sender, ListChangedEventArgs e)
{
Assert.That(sender, Is.InstanceOfType(typeof(EditableArrayList)));
if (e.ListChangedType != ListChangedType.ItemDeleted && e.ListChangedType != ListChangedType.Reset)
Console.WriteLine("ListChanged (ID:{3}). Type: {0}, OldIndex: {1}, NewIndex: {2}", e.ListChangedType, e.OldIndex, e.NewIndex, (e.NewIndex >= 0 && e.NewIndex < _testList.Count) ? ((EditableTestObject)_testList[e.NewIndex]).ID : -1);
else
Console.WriteLine("ListChanged (ID:???). Type: {0}, OldIndex: {1}, NewIndex: {2}", e.ListChangedType, e.OldIndex, e.NewIndex);
}
Понятно, что там будет BindingListImpl, т.к. событие ListChanged тупо ему делегируется:
public event ListChangedEventHandler ListChanged
{
add { BindingListImpl.ListChanged += value; }
remove { BindingListImpl.ListChanged -= value; }
}
Как это исправить
втупую понятно. А вот как исправить правильно

.
... << RSDN@Home 1.2.0 alpha 4 rev. 1136>>
Здравствуйте, Блудов Павел, Вы писали:
БП>Как это исправить втупую понятно. А вот как исправить правильно
.
втупую это или нет, я

, но терь ЕдитаблАррэй слушает события БиндингЛистИмпл и райзит свои, укакзывая себя в качестве сендера