ObjectBinder - немного дополнительного функционал
От: albenik Россия  
Дата: 16.02.09 14:25
Оценка:
Приветствую!
Для счастья не хватает совсем немного:

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) Если грабель нет, добавьте пожалуйста этот функционал в код, особенно второй пункт хочется.

И спасибо за суперский фреймворк!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.