Приветствую!
Для счастья не хватает совсем немного:
1) ObjectBinder: Методов ResetBindings, ResetItem, ResetCurrentItem как в BindingSource.
2) ObjectBinder: Возможности забиндить в Designtime вложенный объект, а не только его свойства.
Первый пункт я решил для себя так (пока не очень дотумкал, получить индекс текущего элемента средсвами только ObjectBinder, но для меня это не очень актуально):
public class ObjectBinderEx : ObjectBinder
{
public void ResetObject()
{
if (Object == null) return;
var index = List.IndexOf(Object);
if (index < 0) return;
OnListChanged(ListChangedType.ItemChanged, index);
}
public void ResetItem(int index)
{
if (index < 0 || index >= List.Count) return;
OnListChanged(ListChangedType.ItemChanged, index);
}
public void ResetList()
{
OnListChanged(ListChangedType.Reset, -1);
}
}
По второму пункту докопался до TypeAccessor.GetExtendedProperties() и добавили list.Add(p) в самом начале блока добавления вложенных пропертей
(BLToolkit 3.1)
if (!isList &&
!propertyType.IsValueType &&
!propertyType.IsArray &&
(!propertyType.FullName.StartsWith("System.") || explicitlyBound
|| propertyType.IsGenericType) &&
propertyType != typeof(Type) &&
propertyType != typeof(string) &&
propertyType != typeof(object) &&
Array.IndexOf(parentTypes, propertyType) == -1)
{
// НОВАЯ СТРОЧКА
list.Add(p);
//...
}
Собственно вопросы:
1) Не наступил-ли случайно на грабли?
2) Если грабель нет, добавьте пожалуйста этот функционал в код, особенно второй пункт хочется.
И спасибо за суперский фреймворк!